Док = Документы.НачислениеЗарплаты;
Сотр = Справочник.Сотрудники;
СпрВидРасчета = ПланыВидовРасчета.Начисления;
Док=Документы.НачислениеЗарплатыРаботникамОрганизаций.СоздатьДокумент();
я
{ВнешняяОбработка.ЗагрузкаНарядов_3.Форма.ЗагрузкаНарядов.Форма(15,19)}: Переменная не определена (Документы)
Док = <<?>>Документы.НачислениеЗарплаты; (Проверка: Тонкий клиент)
{ВнешняяОбработка.ЗагрузкаНарядов_3.Форма.ЗагрузкаНарядов.Форма(18,7)}: Переменная не определена (Документы)
Док=<<?>>Документы.НачислениеЗарплатыРаботникамОрганизаций.СоздатьДокумент(); (Проверка: Тонкий клиент)
{ВнешняяОбработка.ЗагрузкаНарядов_3.Форма.ЗагрузкаНарядов.Форма(16,19)}: Переменная не определена (Справочник)
Сотр = <<?>>Справочник.Сотрудники; (Проверка: Тонкий клиент)
Ругается, как правильно записать ?
По теме из базы знаний
- Перенос данных из ЗУП2.5 в ЗУП3.0 (Исправление правил)
- Правила обмена ЗУП 2.5 ПРОФ -> ЗУП 3.1 КОРП (перенос данных управленческого учёта)
- Перенос данных по стажу для ЗУП 3.1.8
- Использование менеджера расчета для расчета зарплаты в ЗУП 3.1
- Программное создание и расчет документов начисления зарплаты в конфигурации ЗУП 3.1 и ERP (по подразделениям)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)
Получается на сервере надо запускать?
Код |
---|
&НаКлиенте
Процедура Команда2(Команда)
Перем ТипРасчета;
ДБФ = Новый XBase;
ДБФ.Кодировка = КодировкаXBase.OEM;
ДБФ.ОткрытьФайл("\\Server\ZAR_PLAT\ZARVAL\Sd_Nar.DBF");
Если ДБФ. Открыта() = 0 Тогда
//Предупреждение("Не смогли открыть Базу!", 2);
Возврат;
КонецЕсли;
ДБФ.Индексы.Добавить("Shifr",0,0,"");
ДБФ.СоздатьИндексныйФайл("i_Sd_Nar.cdx");
Док = Документы.НачислениеЗарплаты;
Сотр = Справочники.Сотрудники;
СпрВидРасчета = ПланыВидовРасчета.Начисления;
НовыйДок = Док.СоздатьДокумент();
Показать полностью |
Получается на сервере надо запускать?
(9)
НачислениеЗП =
Код |
---|
&НаСервере
Процедура Команда2(Команда)
Перем ТипРасчета;
ДБФ = Новый XBase;
ДБФ.Кодировка = КодировкаXBase.OEM;
ДБФ.ОткрытьФайл("\\Server\ZAR_PLAT\ZARVAL\Sd_Nar.DBF");
Если ДБФ. Открыта() = 0 Тогда
//Предупреждение("Не смогли открыть Базу!", 2);
Возврат;
КонецЕсли;
ДБФ.Индексы.Добавить("Shifr",0,0,"");
ДБФ.СоздатьИндексныйФайл("i_Sd_Nar.cdx");
Док = Документы.НачислениеЗарплаты;
Сотр = Справочники.Сотрудники;
СпрВидРасчета = ПланыВидовРасчета.Начисления;
НовыйДок = Док.СоздатьДокумент();
Показать полностью |
(8) Если нужно на клиентской стороне подготовить данные, а потом создать документ, стоит разделить процесс. Например, на клиенте готовите структуру с данными, а потом забрасываете ее на сервер.
Концептуально может выглядеть так:
Это довольно простой пример, но отражает суть работы на управляемых формах. Просто адаптируйте под свою задачу.
Концептуально может выглядеть так:
&НаСервере
Процедура СозданиеДокументаНачисления(ДанныеДокумента)
Док = Документы.НачислениеЗарплаты.СоздатьДокумент();
ЗаполнитьЗначенияСвойств(Док, ДанныеДокумента);
Док.Записать();
КонецПроцедуры
&НаКлиенте
Процедура ИмпортДанныхДляНачисления()
ДанныеДокумента = Новый Структура;
ДанныеДокумента.Вставить("Комментарий", "Импорт документа");
// Заполнение структуры другими реквизитами по Вашим правилам
// Создание документа
СозданиеДокументаНачисления(ДанныеДокумента);
КонецПроцедуры
ПоказатьЭто довольно простой пример, но отражает суть работы на управляемых формах. Просто адаптируйте под свою задачу.
(13) Можно так, а можно всё на сервере сделать. Если Вы работаете в файловой базе с XBase, то не принципиально где данные получать. Разница будет, если у Вас клиент-сервер, тогда сервер работает в отдельном потоке на сервере под своим пользователем, соответственно файл Dbf с клиентской машины напрямую ему будет недоступен. Тогда в серверную процедуру файл нужно передавать через временное хранилище или он должен находится на файловом ресурсе, который доступен пользователю, под которым работает серверный поток.
В Вашем случае, чтоб не заморачиваться, я бы прочитал файл на клиенте, заполнил структуру, а потом отправил бы всё это на сервер, и там бы работал уже со структурой. Собственно, под такой вариант я Вам и прислал пример.
Но чисто методически правильнее было бы передавать DBF файл на сервер через временное хранилище и целиком его обрабатывать на стороне сервера.
В Вашем случае, чтоб не заморачиваться, я бы прочитал файл на клиенте, заполнил структуру, а потом отправил бы всё это на сервер, и там бы работал уже со структурой. Собственно, под такой вариант я Вам и прислал пример.
Но чисто методически правильнее было бы передавать DBF файл на сервер через временное хранилище и целиком его обрабатывать на стороне сервера.
(12)
Верно?
Код |
---|
&НаКлиенте
Процедура ИмпортДанныхДляНачисления()
ДанныеДокумента = Новый Структура;
ДанныеДокумента.Вставить("Комментарий", "Импорт документа");
ДБФ = Новый XBase;
ДБФ.Кодировка = КодировкаXBase.OEM;
ДБФ.ОткрытьФайл("\\Server\ZAR_PLAT\ZARVAL\Sd_Nar.DBF");
Если ДБФ. Открыта() = 0 Тогда
//Предупреждение("Не смогли открыть Базу!", 2);
Возврат;
КонецЕсли;
ДБФ.Индексы.Добавить("Shifr",0,0,"");
ДБФ.СоздатьИндексныйФайл("i_Sd_Nar.cdx");
СозданиеДокументаНачисления(ДанныеДокумента);
КонецПроцедуры;
Показать полностью |
Верно?
(14) Файл то Вы открыли, но данные то нужно из него выбрать и затолкнуть в структуру, а потом для каждой итерации вызвать создание документа на сервере. Т.е. извлекли данные для первого документа из Dbf, заполнили структуру, вызвали создание на сервере. Потом то же самое для следующего документа, и т.д.
Так же можно сразу сделать массив структур с данными документов и отправить его на сервер целиком, а он его обработает и создаст документы. Тогда процедуру создания нужно доработать исходя из того, то Вы в нее не данные одного документа отправляете, а массив документов.
Так же можно сразу сделать массив структур с данными документов и отправить его на сервер целиком, а он его обработает и создаст документы. Тогда процедуру создания нужно доработать исходя из того, то Вы в нее не данные одного документа отправляете, а массив документов.
(17)
(16)
(16)
Можно так, а можно всё на сервере сделать.
&НаСервере
Процедура Команда2(Команда)
Перем ТипРасчета;
ДБФ = Новый XBase;
ДБФ.Кодировка = КодировкаXBase.OEM;
ДБФ.ОткрытьФайл("\\Server\ZAR_PLAT\ZARVAL\Sd_Nar.DBF");
Если ДБФ. Открыта() = 0 Тогда
//Предупреждение("Не смогли открыть Базу!", 2)
Возврат;
КонецЕсли;
ДБФ.Индексы.Добавить("Shifr",0,0,"");
ДБФ.СоздатьИндексныйФайл("i_Sd_Nar.cdx");
Док = Документы.НачислениеЗарплаты;
Сотр = Справочники.Сотрудники;
СпрВидРасчета = ПланыВидовРасчета.Начисления;
Док = Документы.НачислениеЗаработнойПлаты.СоздатьДокумент();
ДБФ.Первая();
Пока ДБФ.ВКонце() = 0 Цикл
ВидОплаты = ДБФ.Shifr;
Док.ПериодНачисленияДатаОкончания = ДБФ.Dat_End;
Если ДБФ.Shifr = "001" Тогда
Шифр001 = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Сдельные наряды(суммой)",0);
Если Не Шифр001.Пустая() Тогда
Расчет1 = Шифр001;
Иначе
//Предупреждение ("Шифр оплаты Сдельные наряды(суммой) не найден",3);
КонецЕсли;
ИначеЕсли ДБФ.Shifr = "005" Тогда
Шифр005 = СпрВидРасчета.НайтиПоНаименованию("Сверхурочные(суммой)", 0);
Если Не Шифр005.Пустая() Тогда
Расчет1 = Шифр005;
Иначе
//Предупреждение ("Шифр оплаты Сверхурочные(суммой) не найден",3);
КонецЕсли;
ИначеЕсли ДБФ.Shifr = "050" Тогда
Шифр050 = СпрВидРасчета.НайтиПоНаименованию("Премия месячная(суммой)", 0);
Если Не Шифр050.Пустая() Тогда
Расчет1 = Шифр050;
Иначе
//Предупреждение ("Шифр оплаты Премия месячная(суммой)не найден",3);
КонецЕсли;
ИначеЕсли ДБФ.Shifr = "002" Тогда
Шифр002 = СпрВидРасчета.НайтиПоНаименованию("Повременная оплата(суммой)", 0);
Если Не Шифр002.Пустая() Тогда
Расчет1 = Шифр002;
Иначе
//Предупреждение ("Повременная оплата(суммой) не найден",3);
КонецЕсли;
ИначеЕсли ДБФ.Shifr = "018" Тогда
Шифр018 = СпрВидРасчета.НайтиПоНаименованию("Оплата разных работ", 0);
Если Не Шифр018.Пустая() Тогда
Расчет1 = Шифр018;
Иначе
//Предупреждение ("Шифр оплаты Оплата разных работ не найден",3);
КонецЕсли;
Иначе
//Предупреждение ("Шифр оплаты "+ ДБФ.Shifr+" не найден",50);
КонецЕсли;
ОписательЗначения = "";
ОписательВеличины = "";
КолСтрок = 0;
Пока (ДБФ.ВКонце() = 0) и (ВидОплаты = ДБФ.Shifr) Цикл
ТекСтрока = Док.Начисления.Добавить();
КолСтрок = КолСтрок + 1;
ТекСтрока.ВидРасчета = Расчет1;
Сотр1 = Сотр.НайтиПоКоду(ДБФ.TabNom, 0);
//
Если Не Сотр1.Пустая() Тогда
ТекСтрока.Сотрудник = Сотр1;
Иначе
КонецЕсли;
ТекСтрока.Результат = ДБФ.Summa;
ТекСтрока.ДатаНачала = ТекущаяДата();
ТекСтрока.ДатаНачалаСобытия = ДБФ.Dat_Beg;
ТекСтрока.ДатаОкончания = ДБФ.Dat_End;
ДБФ.Следующая();
Если (ДБФ.ВКонце() = 1) Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если КолСтрок > 0 Тогда
Док.Дата = ТекущаяДата();
КонецЕсли;
КонецЦикла;
Док.Записать();
Сообщить(ОписаниеОшибки());
КонецПроцедуры
Показать
(18) В принципе что-то вроде... Попробуйте.
Единственное, учтите, что Предупреждение() и Сообщить() на сервере недоступны. Если хотите выкинуть сообщение пользователю, пользуйтесь функциями БСП, которые есть в ЗУП, например:
Единственное, учтите, что Предупреждение() и Сообщить() на сервере недоступны. Если хотите выкинуть сообщение пользователю, пользуйтесь функциями БСП, которые есть в ЗУП, например:
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
(19)
ничего не выходит
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
&НаСервере
Процедура Команда2(Команда)
Перем ТипРасчета;
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("SsssS");
ДБФ = Новый XBase;
ДБФ.Кодировка = КодировкаXBase.OEM;
ничего не выходит
{ВнешняяОбработка.ЗагрузкаНарядов_3.Форма.ЗагрузкаНарядов.Форма(134,1)}: Неопознанный оператор
<<?>>&НаСервере (Проверка: Сервер)
{ВнешняяОбработка.ЗагрузкаНарядов_3.Форма.ЗагрузкаНарядов.Форма(1,1)}: Обнаружено логическое завершение исходного текста модуля (Проверка: Сервер)
{ВнешняяОбработка.ЗагрузкаНарядов_3.Форма.ЗагрузкаНарядов.Форма(134,1)}: Неопознанный оператор
<<?>>&НаСервере (Проверка: Тонкий клиент)
{ВнешняяОбработка.ЗагрузкаНарядов_3.Форма.ЗагрузкаНарядов.Форма(1,1)}: Обнаружено логическое завершение исходного текста модуля (Проверка: Тонкий клиент)
<<?>>&НаСервере (Проверка: Сервер)
{ВнешняяОбработка.ЗагрузкаНарядов_3.Форма.ЗагрузкаНарядов.Форма(1,1)}: Обнаружено логическое завершение исходного текста модуля (Проверка: Сервер)
{ВнешняяОбработка.ЗагрузкаНарядов_3.Форма.ЗагрузкаНарядов.Форма(134,1)}: Неопознанный оператор
<<?>>&НаСервере (Проверка: Тонкий клиент)
{ВнешняяОбработка.ЗагрузкаНарядов_3.Форма.ЗагрузкаНарядов.Форма(1,1)}: Обнаружено логическое завершение исходного текста модуля (Проверка: Тонкий клиент)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот