1С 7.x : Работа с журналом расчетов в 1С7.7 из 1С 8.1 через Com соединение
Недавно делал перенос справочников и документов из 1С 7.7 "Зарплата и кадры" в 1С 8.1 "Управление торговым предприятием" через Com соединение. Во время переноса столкнулся с некоторыми проблемами. Одна из них - это при выполнении запроса очень важно правильно указать синтаксис передаваемых значений, особенно даты, иначе запрос не будет выполняться. Как правильно написать запрос? Смотрим:
Если нам необходимо установить отбор в журнале, например по сотруднику, то сделать это можно следующим образом:
Из журнала расчетов можно выбрать записи без запроса, методом прямой выборки. В некоторых ситуациях этот способ может быть даже удобней чем через запрос. В данном случае синтаксис будет довольно простым:
COM-подключение к базе 7.7 из .NET, .NET Core 2 Инсталяция: dotnet add package sabatex.V1C77 или добавить через NUGET пакет sabatex.V1C77. Добавить пространство имен: using sabatex.V1C77; пример использованя: ---C# static void Main(string args) { // создаем строку соединенCOM-подключение к базе 7.7 из 8.2 1С 7 Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине.
Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)):
НаКлиенте
Процедура Загрузки()
ПутьКБазе=" D: ВашаБаза 1с77 " ;
Пользователь=v7plus.dll - отсутствует CLSID либо отсутствует интерфейс llnitDone 0 При выгрузке отчетности в 1С 7.7 программа ругается на v7plus.dll и указывает, что отсутствует интерфейс llritDone. Что делать?
1) Поудалять нафиг все v7plus.dll из каталогов ИБ и папок пользователей
2) Оставить только в bin каталоге и зарегить черВыбор запросом элементов справочника и Загрузка в Документ 0 Запрос = СоздатьОбъект(" Запрос" );
ТекстЗапроса =
" //{{ЗАПРОС(Сформировать)
//|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|Номенклатура = Справочник.Номенклатура.ТекущийЭлемент;
|Группировка Номенклатура Выборка документа по номеру и вывод на Печать, в Табличный Документ 0
Процедура Печать()
Если (ПустоеЗначение(ДатаНач)=1) или (ПустоеЗначение(ДатаКон)=1) Тогда
Предупреждение(" Не задан период отчета" );
Возврат;
КонецЕсли;
Заг=" За период с " +ДатаНач+" по " +ДатаКон;
Таб=СоздатьОбъект(" Таблица" );
Таб.ВывПосмотреть все результаты поиска похожих
Ввод записей в журнал расчетов 1 Добавление записи в журнал расчетов:
Метод Новая может быть вызван где угодно, в глобальном модуле, модуле обработок, документов и т.д.
Данный метод проверяет корректность заполненных реквизитов журнала расчетов. При вводе новых записей журналПеребор записей журнала расчетов 0 Например, организуем перебор записей с периодом действия в январе.
ЖЗ = СоздатьОбъект(" ЖурналРасчетов.Зарплата" );
ДатаНач = 01.01.2002;
ДатаКон = 31.01.2002;
ЖЗ.ВыбратьЗаписи(ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
// действРасчет начислений по сотруднику, подразделени, документу 0 // Посчитаем все начисления текущего сотрудника за январь:
ВсегоНачислено = 0;
ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
Если ЖЗ.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда
ВсегоНачУдаление записей в журнале расчетов 0 При отмене проведения документа обычно автоматически удаляются всего его движения, в том числе и введенные записи в журналы расчетов.
Можно также явно удалять записи методом журнала расчетов УдалитьЗапись() .Методы работы с периодом журнала расчетов 0 НачалоПериода = ЖЗ.НачалоТекущегоПериода();
КонецПериода = ЖЗ.КонецТекущегоПериода();
ПериодСтрокой = ЖЗ.ОписательПериода(НачМес); //например " Январь 2002 г" Посмотреть все в категории Журналы расчетов