очередная моя тема
гуру программирования помогите сделать одну весчь в уже сделанном программистами 1С отчете - журнале-ордере. я бы хотел в него добавить колонку субсчета. когда я формирую ЖО по счету например 10 "Основные средства" в отдельной колонке чтобы выводился субсчет для каждого объекта: например для Здания офиса 103, автомобиль Ока))) - 105, плоскогубцы - 106 и так далее как это заложено бухгалтерами предприятия.
а то замучался выгружать все субсчета по отдельности и потом проставлять субсчет
реально такая обработка экономила бы мне время процентов на 80
А что, вариант с выгрузкой у Вас так и не пошел? Там же все скопом можно выгрузить и субсчета высвечиваются.
да не, тут не та ситуация. выгрузка работает на 100% за это спасибо))
но здесь мне нужно видеть восновном остатки на начало и на конец как в журнале-ордере
Так я и говорю про выгрузку сальдо. Я выкладывал? Или только обороты выложил?
у меня есть только обороты
если можно ссылочку на сальдо?
вот хотелось бы например после колонки "субконто" сделать колонку субсчет, где указывался субсчет для конкретного объекта
Для восьмерки выгрузка остатков в том же архиве, что и выгрузка проводок https://forum.msexcel.ru/microsoft_excel/vygruzka_provodok_iz_1sv8-t1774.0.html;msg12446#msg12446.
А для семерки я не выкладывал. У меня на работе есть, но сделано не в общем виде, а заточено под мои задачи. Если актуально, могу выложить, но для самостоятельного редактирования или не очень быстро.
:-[
если сможете выложите для 7-ки, посмотрю что к чему, может и прокатит
обидно что не знаю вба...
Ну, 1С - это совсем не VBA
всеравно туго)))
Вот нашел на флешке вариант выгрузки. Но он заточен вообще под конкретную фирму. Там в к номеру счета впереди будет подставляться аббревиатура "ОЛК". Поправить дома не могу - 1С не установлен. Попробуйте сами. В крайнем случае так можно использовать.
Начинаю выгрузку сальдо на 30.06.09
Прдпр=Константа.НазваниеОрганизации;
{C:\DOCUMENTS AND SETTINGS\ADM\РАБОЧИЙ СТОЛ\САЛЬДО ОЛК.ERT(12)}: Поле агрегатного объекта не обнаружено (НазваниеОрганизации)
вот что выдало
Да, боюсь дистанционно я тут Вам не помогу. Скорее всего какая-то национальная особенность конфигурации.
Хотя, попробуйте посмотреть список констант в конфигураторе. Замените в обработке текст Константа.НазваниеОрганизации на правильный вариант. В крайнем случае, замените вообще пустой строкой ""
удалил строку с константой предприятия, обрабатывает период а потом пишет:
Начинаю выгрузку сальдо на 30.06.09
Прдпр<<?>>
Переменная не определена (Прдпр)
отчет_ф= КаталогИ + "Сальдо по счетам "+СтрЗаменить(СокрЛП(Константа.НазваниеОрганизации),"""","")+" на "+ВыбКонПериода+".txt";//+СокрЛП(СтрЗаменить(Фильтр,"*","x"),":",".")
{C:\DOCUMENTS AND SETTINGS\ADM\РАБОЧИЙ СТОЛ\САЛЬДО ОЛК.ERT(61)}: Поле агрегатного объекта не обнаружено (НазваниеОрганизации)
Ну это та же проблема. У Вас в конфигурации название организации вносится в какую-то другую константу. Вы когда конфигуратор запускаете, в дереве конфигурации в группе константы найдите что-нибудь похожее на название организации. И потом везде в коде модуля замените Константа.НазваниеОрганизации на соответствующее правильное название константы.
вобщем подправил, выгрузило мне (а я еще путь изменил для сохранения).
НО! я вот взял счет 104 и у меня сальдо не сходится с тем что по оборотно-сальдовой ведомости
а программа, выгружает только сальдо ДТ и Кт на какую дату?
я хотел чтобы и начальные и конечные были
а вот уже существующий журнал ордер нельзя переделать под мои желания? и просто потом сохранить для себя
о!!! вроде на итог вышло!!!
есть еще один вопрос по поводу взлома пароля на конфигуратор. программер защитил конфигурацию, и я не могу зайти в неё чтобы в справочнике поставить субконто 1 "Наименование" вместо "Место хранения". а без этого обработка мне выгружает не по наименования объектов, а по местам хранения.
На счет взлома паролей, если вы конечно с копией базы балуетесь, в семерке это просто. Удаляете файлы из папки userdef (кажется так).
Оборотку конечно можно поменять, но там нужно не просто форму менять, а вообще алгоритм обхода субсчетов. Боюсь, что я не смогу помочь. Я не настолько силен в программировании 1С, чтоб браться за такие задачи. А для профессионала, думаю, плевое дело.
c папкой я работал, но не удачно
пароль у меня стоит только если я пытаюсь открыть непосредственно конфигурацию, создавать пользователей я могу, архивировать базу и тд...
А попробуйте вметсо номера субконто 1 указать 2. Может так проскочит?
окей, буду копаться)))
//*******************************************
//{{БУХГАЛТЕРСКИЙ ЗАПРОС(Сформировать)
//Данный фрагмент построен конструктором.
//При повторном использовании конструктора, внесенные вручную изменения будут потеряны!!!
//{{ Схема номер 1
//{{ ПодробноеПредставлениеСубконто
Процедура Сформировать()
Сообщить("Начинаю выгрузку сальдо на "+ВыбКонПериода);
Прдпр=Константа.БазФирма;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
//Ит.ИспользоватьСубконто(ВыбВидСубконто3,, 1);
Ит.ИспользоватьСубконто();
//Ит.ИспользоватьСубконто();
//Ит.ИспользоватьСубконто();
Ит.ВключатьСубсчета(-1);
Ит.ВыполнитьЗапрос(ВыбКонПериода, ВыбКонПериода, ,,, 1,, "С");
Таб.ВывестиСекцию("константы");
Таб.ВывестиСекцию("Счет");
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
Ит.ВыбратьСчета();
Пока Ит.ПолучитьСчет() = 1 Цикл
//Таб.ВывестиСекцию("Счет");
Сбк=Ит.Счет.КоличествоСубконто(); //считаем нулевые субконто
Если Сбк = 0 Тогда
ПолнНаименование=Ит.Счет.Наименование;
дебс=ит.скд();
кредс=ит.скк();
Таб.ВывестиСекцию("Субконто3");
иначе
деб=ит.скд();
кред=ит.скк();
Ит.ВыбратьСубконто(1,,,,,,1);
Пока Ит.ПолучитьСубконто() = 1 Цикл
ПолнНаименование=Ит.субконто(1);
если Ит.субконто(1).ПредставлениеВида()="Контрагенты" тогда
//ИНН= Ит.субконто(1).ИНН;
ПолнНаименование=Ит.субконто(1).ПолнНаименование ;
конецесли;
дебс=ит.скд();
кредс=ит.скк();
Таб.ВывестиСекцию("Субконто3");
деб=деб-ит.скд();
кред=кред-ит.скк();
КонецЦикла;
Если (деб<>0) или (кред<>0) Тогда
ПолнНаименование=Ит.Счет.Наименование;
дебс=деб;
кредс=кред;
Таб.ВывестиСекцию("Субконто3");
КонецЕсли;
конецесли;
КонецЦикла;
//Таб.ВывестиСекцию("Подвал");
//Таб.ТолькоПросмотр(1);
//Таб.Показать("Сформировать","");
КаталогИ="C:\Documents and Settings\Adm\Рабочий стол\";//"C:\Buh\";//КаталогИБ()+"ExtForms\";
отчет_ф= КаталогИ + "Сальдо по счетам "+СтрЗаменить(СокрЛП(Константа.БазФирма),"""","")+" на "+ВыбКонПериода+".txt";//+СокрЛП(СтрЗаменить(Фильтр,"*","x"),":",".")
таб.записать(отчет_ф,"TXT");
сообщить("Подготовлен файл "+отчет_ф);
//ЗапуститьПриложение("explorer.exe /select, "+отчет_ф);
//Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
// ЗавершитьРаботуСистемы();
//КонецЕсли;
КонецПроцедуры
//}}БУХГАЛТЕРСКИЙ ЗАПРОС
Процедура Автоматически()
//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА(Сформировать)
//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА
//Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
//ВыбКонПериода = "31.12.2007";
//Сформировать();
//ВыбКонПериода = "31.01.2008";
//Сформировать();
//ВыбКонПериода = "29.02.2008";
//Сформировать();
//ВыбКонПериода = "31.03.2008";
//Сформировать();
ВыбКонПериода = НачМесяца(ТекущаяДата())-1;
Сформировать();
ВыбКонПериода = НачМесяца(НачМесяца(ТекущаяДата())-1)-1;
Сформировать();
ВыбКонПериода = НачМесяца(НачМесяца(НачМесяца(ТекущаяДата())-1)-1)-1;
Сформировать();
ВыбКонПериода = ТекущаяДата()-2;
Сформировать();
ВыбКонПериода = ТекущаяДата()-1;
Сформировать();
ВыбКонПериода = ТекущаяДата();
Сформировать();
//ЗавершитьРаботуСистемы();
//КонецЕсли;
сообщить("Готово!");
КонецПроцедуры
вот где жирным я заменил на субконто 3, выдало ошибку...
ЗЫ: ничего что код высветил здесь? или удалить?
Код пускай висит, мне не жалко.
Попробуйте кусочек
//Ит.ИспользоватьСубконто(ВыбВидСубконто3,, 1);
Ит.ИспользоватьСубконто();
Заменить на
Ит.ИспользоватьСубконто(ВыбВидСубконто2,, 1);
//Ит.ИспользоватьСубконто();
А вот здесь
Таб.ВывестиСекцию("Субконто3");
не нужно заменять номер субконто. Там кажется ранше было Субконто1 - верните назад как было. Это в самом деле не номер субконто - это просто название секции таблицы и назвать его можно как угодно. Посмотрите на разметку таблицы, поймете.
Да, очень сложно это все по памяти. А на работе минуты нет, чтобы посмотреть :(
а я всетаки взломал пароль))))
обработка работает как надо, только обидно что мне выдает остатки только на конец периода....
но всеравно спасибо!!!
тему можно ликвидировать
Зачем ликвидировать? пусть висит. Может кому сгодится.
По поводу конца и начала периода. Конец одного - всегда начало другого.
Допустим Вам нужны остатки на начало и конец ноября. Берете остатки на 30.11 и 31.10. Собираете в одну таблицу, строите сводную и выносите дату в заголовок столцов. Все. Вы получаете данные на начало и конец по каждой позиции.
в принципе логично :)
столкнулся с проблемой. у предприятия есть одинаковые наименования объектов основных средств, которые числятся на разных субсчетах и поэтому приходится вручную исправлять ошибки.
Алексей, возможно ли чтобы обработка выгружала и наименование и инвентарный номер либо в одной колонке с наименование объекта либо в соседней?
Конечно, возможно. Просто это обработка общего вида, а у Вас конкретная задача под конкретный счет.
У Вас в коде есть образец, как это сделать:
если Ит.субконто(1).ПредставлениеВида()="Контрагенты" тогда
//ИНН= Ит.субконто(1).ИНН;
ПолнНаименование=Ит.субконто(1).ПолнНаименование ;
конецесли;
Делайте по аналогии. Найдите в дереве конфигурации, правильно как называется у Вас субконто справочника основных средств и замените Ит.субконто(1).ПредставлениеВида()="Контрагенты" на Ит.субконто(1).ПредставлениеВида()="ОсновныеСредства" (например).
Дальше в нутри вместо ПолнНаименование=Ит.субконто(1).ПолнНаименование ;
пишем что-то типа ИнвентарныйНомер=Ит.субконто(1).ИнвентарныйНомер ;
Только посмотрите, как правильно называется поле справочника ОС с инвентарным номером.
И последний штрих. В таблице в секции Субконто1 в отдельный столбец вставляем формулу <ИнвентарныйНомер>.
Ну, для красоты еще можно название столбца приписать в секцию Шапка (или как там она называется?).
Кстати, еще одно преимущество выгрузки перед стандартной ОСВ - вы можете увидеть не только начальный и конечный остаток по позиции, а построить, например ежедневную или ежемесячную динамику. С помощью все той же сводной таблицы.
спасибо, щас буду куралесить :D
подправил. вот такое получилось
если Ит.субконто(1).ПредставлениеВида()="НеоборотныеАктивы" тогда
//ИНН= Ит.субконто(1).ИНН;
ИнвенНомер=Ит.субконто(1).ИнвенНомер;
конецесли;
но выдает ошибку
Неопознанный оператор
<<?>><ИнвенНомер>
Мда. Сложно, конечно, дистанционно. Может Вы формулу неправильно ввели? Там как-то настройки в свойствах нужно. А проще скопируйте ячейку с ПолнымНаименованием и измените текст в строке формул. Угловые кавычки должны сами подставиться, если все правильно. их вводить не нужно.
ааа, а я их от руки сделал))
а в остальном правильно?
такс, заменил в свойствах ячейки с текста на выражение и скобки сами появились. но при выгрузки в файле колонка Инв. Номер есть, но она пустая
рабочий код
//*******************************************
//{{БУХГАЛТЕРСКИЙ ЗАПРОС(Сформировать)
//Данный фрагмент построен конструктором.
//При повторном использовании конструктора, внесенные вручную изменения будут потеряны!!!
//{{ Схема номер 1
//{{ ПодробноеПредставлениеСубконто
Процедура Сформировать()
Сообщить("Начинаю выгрузку сальдо на "+ВыбКонПериода);
Прдпр=Константа.БазФирма;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
//Ит.ИспользоватьСубконто(ВыбВидСубконто1,, 1);
Ит.ИспользоватьСубконто();
//Ит.ИспользоватьСубконто();
//Ит.ИспользоватьСубконто();
Ит.ВключатьСубсчета(-1);
Ит.ВыполнитьЗапрос(ВыбКонПериода, ВыбКонПериода, ,,, 1,, "С");
Таб.ВывестиСекцию("константы");
Таб.ВывестиСекцию("Счет");
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
Ит.ВыбратьСчета();
Пока Ит.ПолучитьСчет() = 1 Цикл
//Таб.ВывестиСекцию("Счет");
Сбк=Ит.Счет.КоличествоСубконто(); //считаем нулевые субконто
Если Сбк = 0 Тогда
ПолнНаименование=Ит.Счет.Наименование;
дебс=ит.скд();
кредс=ит.скк();
Таб.ВывестиСекцию("Субконто1");
иначе
деб=ит.скд();
кред=ит.скк();
Ит.ВыбратьСубконто(1,,,,,,1);
Пока Ит.ПолучитьСубконто() = 1 Цикл
ПолнНаименование=Ит.субконто(1);
если Ит.субконто(1).ПредставлениеВида()="Контрагенты" тогда
//ИНН= Ит.субконто(1).ИНН;
ПолнНаименование=Ит.субконто(1).ПолнНаименование ;
конецесли;
дебс=ит.скд();
кредс=ит.скк();
Таб.ВывестиСекцию("Субконто1");
деб=деб-ит.скд();
кред=кред-ит.скк();
КонецЦикла;
Если (деб<>0) или (кред<>0) Тогда
ПолнНаименование=Ит.Счет.Наименование;
дебс=деб;
кредс=кред;
Таб.ВывестиСекцию("Субконто1");
КонецЕсли;
конецесли;
КонецЦикла;
//Таб.ВывестиСекцию("Подвал");
//Таб.ТолькоПросмотр(1);
//Таб.Показать("Сформировать","");
КаталогИ="C:\Documents and Settings\Adm\Рабочий стол\";//"C:\Buh\";//КаталогИБ()+"ExtForms\";
отчет_ф= КаталогИ + "Сальдо по счетам "+СтрЗаменить(СокрЛП(Константа.БазФирма),"""","")+" на "+ВыбКонПериода+".txt";//+СокрЛП(СтрЗаменить(Фильтр,"*","x"),":",".")
таб.записать(отчет_ф,"TXT");
сообщить("Подготовлен файл "+отчет_ф);
//ЗапуститьПриложение("explorer.exe /select, "+отчет_ф);
//Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
// ЗавершитьРаботуСистемы();
//КонецЕсли;
КонецПроцедуры
//}}БУХГАЛТЕРСКИЙ ЗАПРОС
Процедура Автоматически()
//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА(Сформировать)
//{{ИНИЦИАЛИЗАЦИЯ БУХГАЛТЕРСКОГО ЗАПРОСА
//Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
//ВыбКонПериода = "31.12.2007";
//Сформировать();
//ВыбКонПериода = "31.01.2008";
//Сформировать();
//ВыбКонПериода = "29.02.2008";
//Сформировать();
//ВыбКонПериода = "31.03.2008";
//Сформировать();
ВыбКонПериода = НачМесяца(ТекущаяДата())-1;
Сформировать();
ВыбКонПериода = НачМесяца(НачМесяца(ТекущаяДата())-1)-1;
Сформировать();
ВыбКонПериода = НачМесяца(НачМесяца(НачМесяца(ТекущаяДата())-1)-1)-1;
Сформировать();
ВыбКонПериода = ТекущаяДата()-2;
Сформировать();
ВыбКонПериода = ТекущаяДата()-1;
Сформировать();
ВыбКонПериода = ТекущаяДата();
Сформировать();
//ЗавершитьРаботуСистемы();
//КонецЕсли;
сообщить("Готово!");
КонецПроцедуры
картинка отладчика
с вновь возвращаюсь к теме.
я решил добавить графу количеству в данный отчет
как я понял количество выводится при помощи ит.скд(3) или ит.скд("К")
все вроде бы так как написано в книжке, но отчет формируется, а количество везде стоит 0
где я не прав?
Процедура Сформировать()
Сообщить("Начинаю выгрузку сальдо на "+ВыбКонПериода);
Прдпр=Константа.БазФирма;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
//Ит.ИспользоватьСубконто(ВыбВидСубконто1,, 1);
Ит.ИспользоватьСубконто();
//Ит.ИспользоватьСубконто();
//Ит.ИспользоватьСубконто();
Ит.ВключатьСубсчета(-1);
Ит.ВыполнитьЗапрос(ВыбКонПериода, ВыбКонПериода, ,,, 1,, "С");
Таб.ВывестиСекцию("константы");
Таб.ВывестиСекцию("Счет");
Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
Ит.ВыбратьСчета();
Пока Ит.ПолучитьСчет() = 1 Цикл
//Таб.ВывестиСекцию("Счет");
Сбк=Ит.Счет.КоличествоСубконто(); //считаем нулевые субконто
Если Сбк = 0 Тогда
ПолнНаименование=Ит.Счет.Наименование;
дебс=ит.скд();
кредс=ит.скк();
дебскол=ит.скд(3);
кредскол=ит.скк(3);
Таб.ВывестиСекцию("Субконто1");
иначе
деб=ит.скд();
кред=ит.скк();
дебскол=ит.скд(3);
кредскол=ит.скк(3);
Ит.ВыбратьСубконто(1,,,,,,1);
Пока Ит.ПолучитьСубконто() = 1 Цикл
ПолнНаименование=Ит.субконто(1);
если Ит.субконто(1).ПредставлениеВида()="Контрагенты" тогда
//ИНН= Ит.субконто(1).ИНН;
ПолнНаименование=Ит.субконто(1).ПолнНаименование ;
дебскол=ит.скд(3);
кредскол=ит.скк(3);
конецесли;
дебс=ит.скд();
кредс=ит.скк();
Таб.ВывестиСекцию("Субконто1");
деб=деб-ит.скд();
кред=кред-ит.скк();
КонецЦикла;
Если (деб<>0) или (кред<>0) Тогда
ПолнНаименование=Ит.Счет.Наименование;
дебс=деб;
кредс=кред;
Таб.ВывестиСекцию("Субконто1");
КонецЕсли;
конецесли;
КонецЦикла;
//Таб.ВывестиСекцию("Подвал");
//Таб.ТолькоПросмотр(1);
//Таб.Показать("Сформировать","");
КаталогИ="C:\Documents and Settings\Adm\Рабочий стол\";//"C:\Buh\";//КаталогИБ()+"ExtForms\";
отчет_ф= КаталогИ + "Сальдо по счетам "+СтрЗаменить(СокрЛП(Константа.БазФирма),"""","")+" на "+ВыбКонПериода+".txt";//+СокрЛП(СтрЗаменить(Фильтр,"*","x"),":",".")
таб.записать(отчет_ф,"TXT");
сообщить("Подготовлен файл "+отчет_ф);
//ЗапуститьПриложение("explorer.exe /select, "+отчет_ф);
//Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
// ЗавершитьРаботуСистемы();
//КонецЕсли;
ЗЫ: лепил как душа чувстовала, ибо по другому покамисть не умею
Ага, понятно. Нужно писать скк(,3), мы ведь первый агрумент пропускаем.
А у счета внеоборотных активов разве есть количественный учет? Там же на каждое ОС должен быть отдельный инвентарный номер? Или нет?
а почему скк? ведь нада сальдо дебетовое конечное?
а это я изначальный ЖО рихтую))) под материалы))
а, это я по памыти. скк или скд или снд и т.п.
тогда где мне исправить,?
Важна запятая перед тройкой. Тип данных - это второй аргумент. Первый (номер счета) мы не заполняем, поэтому ставим запятую перед вторым аргументом.
дебскол=ит.скд(,3);
{C:\DOCUMENTS AND SETTINGS\ADM\РАБОЧИЙ СТОЛ\САЛЬДО ПО ВСЕМ СЧЕТАМ.ERT(39)}: Слишком много параметров передано при вызове функции/процедуры объекта
:(
а, да, был неправ. Это другой вариант получения итогов. Не нужна запятая.
Понял. Строку
Ит.ВыполнитьЗапрос(ВыбКонПериода, ВыбКонПериода, ,,, 1,, "С");
Нужно заменить на
Ит.ВыполнитьЗапрос(ВыбКонПериода, ВыбКонПериода, ,,, 1,,5);
во шото выгрузилось. щас проверю)))
первый этап по одному счет прошел успешно!!!
второй тоже. все правильно работает!!! очередное спасибо и поклон перед вашими знаниями!
шьёрт побери, хочу добавить еще одну графу "единица измерения"
поискал по примерам используется константа БазЕдиница. прилепил её как Ед=Ит.субконто(1).БазЕдиница.
пишет
Поле агрегатного объекта не обнаружено (БазЕдиница)
понимаю что-то то не так, потому что я использую субконто1, где нет БазЕдиница
а как тогда это сделать не могу понять
но пример я смотрел для материального отчета, где используется видсубконто ТМЦ
Эт точно не константа нужна. Вам нужно искать подходящее поле в справочнике номенклатуры (о нем речь идет?).
в справочнике есть "Единицы"
подставлял и единицы, таже самая ошибка
в Единицах есть подпункт Единица. с ней история аналогичная
Тогда запускаете в отладчике и смотрите, как там все по правильному.
честно я не понял смысла отладчика, поэтому обойдусь без единиц измерения
хотя чувствую, что я близ к истене))
Еще вариант - влезьте в конфигураторе в стандартную ОСВ по счету - там, кажется, где-то указываются единицы измерения по количественному учету.