Решил проверить свои знания по встроенному языку 1С 7.7 в отраслевой конфигурации "Агент-плюс" на базе ТиС 9.2 (Торговля+склад) и доработал для себя типовой отчет "Ведомость по остаткам ТМЦ", чтобы не забывать типовые механизмы хранения и специфику и заодно для определеного круга задач по контролю переноса данных сделать отчет-шаблончик. В основном для контроля работы обработок 1С 7.7 по переносе данных в УТ 10.3 и УТ 11.1 - или прочие конфигурации на базе платформы 1С 8.Х) через XML (тоже полезные наработки - планирую выложить).
На форму отчета по остаткам ТМЦ (фактически прайс-лист при формировании по цене продажи на текущие сутки) добавлены два реквизита на форму (сохраняются в настройках пользователя при указании см рисунок 1):
Рисунок 1. Внешний вид доработанного отчета "Ведомость по остаткам ТМЦ".
- "Тип цены" (закупочная, мелкооптовая, оптовая, цена продажи...);
- "Валюта";
- "флаг отладки" для контроля истории изменения цен (в 1С 7.7 очень нехороший отладчик по сравнению с 8.х).
Работа с конструктором формы и обработчикам для удобства пользователей показана ниже на рисунке 2, где самый простой вариант копировать готовые реквизиты и кнопки и изменять их свойства: тип, идентификатор, заголовок, сохранение, быстрый отбор...
Рисунок 2. Изменение свойств новых реквизитов
Далее, добавим в исходный макет формы отчета колонку "цена" и оформив новый параметр секций "ПечЦена" как показано на рисунках 3 и 4:
Рисунок 3. Макет отчета с колонкой "Цена" (промежуточный вариант как был)
Рисунок 4. Задаем свойсто ячейки "ПечЦена" в конструкторе макета 1С 7.7 что это именно параметр
Код отладки в процедура Сформировать перед выводом:
Если ФлагОтладка = 1 Тогда
текстОтладка = "Отладка Товар: "+Номенклатура+", Типцены: "+Тип+" На дату: "+НаДату+", Ед: "+Единица+", Валюта "+ВыбВалюта+", ЦЕНА НА ПЕЧАТЬ: "+ЦенаЦены;
Сообщить(ТекстОтладка, );
КонецЕсли;
В макет отчета добавлена колонка "цена" и в нее на всех режимах типовых настроек этого отчета должна выводится последняя цена на конечную дату формирования отчета в пересчете на выбранную валюту.
По трудоемкости всего 5-6 правок кода, вынос в модуль формы отчета глобальной функции пересчета цен, правка макета для вывода отбора по добавленным реквизитам, колонки цена и наглядно продемонстрировать отладку. Главное правильно "подцепиться в нужных местах" расчет "ПечЦена":
// ПечатьСтроки()...И еще одна ПечатьДокумента
ПечЦена = ПолучитьЦену(Запрос.Номенклатура, ВыбТипЦен, ДатаКонца, ПечЕд); // блабла - ДОБ+
Секц = Таб.ПолучитьСекцию(НазваниеСекции);
Иначе
ПечЦена = ПолучитьЦену(Запрос.Номенклатура, ВыбТипЦен, ДатаКонца, ПечЕд); // блабла - ДОБ+
Секц = Таб.ПолучитьСекцию(НазваниеСекции);
Секц.Область(1,1,1,7).Объединить();
КонецЕсли;
Таб.ВывестиСекцию(Секц);
глОживить(1);
КонецПроцедуры //ПечатьСтроки()
Также для наглядности не забыть строчку:
Возврат Окр(ЦенаЦены, 2); // До 0.01 руб.
с форматом 1С 7.7 уже для эстетов :)
Также для комиссионных товаров есть таблица значений добавил и в нее колонку в коде (видимо зря). А саму процедуру можно и из глобальника вызывать я убрал глПолучитьЦену на ПолучитьЦену
После синтаксического контроля в конфигураторе в режиме "1С 7.7: Предприятие" отладка проходит на первый взгляд успешно (к слову что отладчик запускается на этой платформе отдельно от конфигуратора, где редактируется наш код внешнего отчета 7.7 (см. рисунок 5):
Рисунок 5. Как проходит отладка и тестирование при включенной галочке отладочных сообщений (которую можно убратьв кофигураторе сделав невидимой и вернуть при необходимости).
У меня заработал на ТиС 9.2 с "наворотами" - проверял работает. Цену брать на последнюю дату отчета (или документа если по ним - тут уточнять уже надо логику что нужно получить) - так у меня все заработало :)
На производительность, увы, влияет, но в бюджет уложиться можно, да и в 1С 7.7 по-другому только прямые запросы или еще как, но уже в отдельной задаче.
Примерный вид работы на рисунке 6 следующий (курсы валют должны быть правильно заполнены и актуальны):
Рисунок 6. Итоговый вид работы отчета: для цен учтены и единицы измерения с коэффициентами и валюты и выбранный тип цены.
Вывод: 1С 7.7 по сравнению с современными УТ 11.1 на управляемых формах, СКД вообще "как игрушка" если удалось вспомнить и все сразу заработало.
Надеюсь, кому-то разработка как "шаблончик" будет полезна. Думаю, для серьезной работы нужны и итоги по группам, и пересчет цены выбранного типа по дате документа (актуально в таком виде как есть на сегодняшние сутки типа "анализ склада по ценам", а также грубый анализ себестоимости.