Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
19 Дек 2017, 01:09
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как записать значение в реквизиты внешней обработки?  (Прочитано 3147 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн k_aleks80

  • **
  • Сообщений: 65
  • РЕПУТАЦИЯ: 14
  • КПД: 22%
  • Регистрация: 2011-09-08
  • Сайт: 
  • Профессия: Программист 1С
Следующая ситуация: имеется внешняя обработка с некоторым набором реквизитов (СписокСтатей1, ..., СписокСтатей9, ВидРасчета - тип: СписокЗначений). У обработки есть две управляемые формы - "Форма" и "ФормаНастройки". Из "Формы" вызывается "ФормаНастройки", затем по кнопке "ВосстановитьПоУмолчанию" происходит заполнение реквизитов формы:
&НаСервере
Процедура ВосстановитьНаСервере()

ТекОбработка = РеквизитФормыВЗначение("ОбработкаОбъект");

ТекОбработка.СписокСтатей1.Очистить(); //Оплата за сверхурочные часы, включая НДФЛ 13%:
ТекОбработка.СписокСтатей1.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("СВХУР"));
ТекОбработка.СписокСтатей1.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ПРАЗД"));
ТекОбработка.СписокСтатей1.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("ПРДОП"));

        // и т.д.

ТекОбработка.ВидРасчета.Очистить();
ТекОбработка.ВидРасчета.Добавить(ПланыВидовРасчета.Начисления.НайтиПоКоду("БЛН"));

ЗначениеВРеквизитФормы(ТекОбработка, "ОбработкаОбъект");

КонецПроцедуры

&НаКлиенте
Процедура Восстановить(Команда)
ВосстановитьНаСервере();
КонецПроцедуры

Все ясно и понятно. Теперь, при вызове "Формы" и нажатии кнопки "Заполнить" должно выполняться заполнение данных на этой форме, с выполнением запроса к БД. В качестве параметра в запросе используется реквизит обработки ВидРасчета, но он пустой!
    Как я понимаю, проблема при заполнении реквизитов обработки в "ФормеНастройки". Т.е. если бы это был внутренний прикладной объект БД (Справочник, Документ), тогда перед обновлением реквизита на форме (ЗначениеВРеквизитФормы) достаточно было бы записать объект и тогда на "Форме" значение реквизита ВидРасчета было бы с данными. Однако в данном случае у объекта ВнешняяОбработка метода Записать() нет. Как мне заполнить реквизиты обработки, чтобы я мог использовать их в запросе, в другой форме?

Последний раз редактировалось: k_aleks80; 16 Мар 2015, 09:55


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
запросом можно получить только данные объектных сущностей - справочник, документ и пр.
обработка к таковым не относится.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн k_aleks80

  • **
  • Сообщений: 65
  • РЕПУТАЦИЯ: 14
  • КПД: 22%
  • Регистрация: 2011-09-08
  • Сайт: 
  • Профессия: Программист 1С
Вы не совсем поняли ситуацию. Запросом данные я выбираю из БД, но в качестве параметра запроса использую реквизит обработки:
&НаСервере
Функция ЗаполнитьНаСервере()

Запрос = Новый Запрос("ВЫБРАТЬ
                      | Начисления.Сотрудник,
                      | СУММА(Начисления.ОтработаноДней) КАК ОплаченоДнейЧасов,
                      | СУММА(Начисления.Результат) КАК СуммаОплаты,
                      | МИНИМУМ(Начисления.ПериодДействияНачало) КАК ПериодДействияНачало,
                      | МАКСИМУМ(Начисления.ПериодДействияКонец) КАК ПериодДействияКонец,
                      | МЕСЯЦ(Начисления.ПериодДействияНачало) КАК Поле1,
                      | ПлановыеНачисленияСрезПоследних.Размер КАК Оклад
                      |ИЗ
                      | РегистрРасчета.Начисления КАК Начисления
                      | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисления.СрезПоследних КАК ПлановыеНачисленияСрезПоследних
                      | ПО Начисления.Сотрудник = ПлановыеНачисленияСрезПоследних.Сотрудник
                      |ГДЕ
                      | Начисления.ПериодРегистрации = &ПериодРегистрации
                      | И Начисления.ВидРасчета В(&ВидРасчета)
                      |
                      |СГРУППИРОВАТЬ ПО
                      | Начисления.Сотрудник,
                      | МЕСЯЦ(Начисления.ПериодДействияНачало),
                      | ПлановыеНачисленияСрезПоследних.Размер");
 
Запрос.УстановитьПараметр("ПериодРегистрации", ОбработкаОбъект.Период);
Запрос.УстановитьПараметр("ВидРасчета", ОбработкаОбъект.ВидРасчета);
Возврат Запрос.Выполнить().Выгрузить();

КонецФункции

&НаКлиенте
Процедура Заполнить(Команда)

СписокДляРазовыхНачислений.Очистить();

Результат = ЗаполнитьНаСервере();

Для каждого ТекЗначение Из Результат Цикл
НоваяСтрока = СписокДляРазовыхНачислений.Добавить();
НоваяСтрока.Сотрудник         = ТекЗначение.Сотрудник;
ТаблицаДляЗаписи = ПолучитьТаблицуЗаИнтервал(ТекЗначение.Сотрудник, НачалоДня(ТекЗначение.ПериодДействияНачало), НачалоДня(ТекЗначение.ПериодДействияКонец));
НоваяСтрока.ОплаченоДнейЧасов = ПолучитьКоличествоРабочихДнейВПериоде(ТаблицаДляЗаписи);
НоваяСтрока.Оклад             = ТекЗначение.Оклад;
НоваяСтрока.СуммаОплаты       = ТекЗначение.СуммаОплаты;
НоваяСтрока.ДатаНачала        = Формат(ТекЗначение.ПериодДействияНачало, "ДЛФ=Д");
НоваяСтрока.ДатаОкончания     = Формат(ТекЗначение.ПериодДействияКонец, "ДЛФ=Д");
ТаблицаДляЗаписи = ПолучитьТаблицуЗаИнтервал(ТекЗначение.Сотрудник, НачалоМесяца(ТекЗначение.ПериодДействияНачало), КонецМесяца(ТекЗначение.ПериодДействияКонец));
НоваяСтрока.КоличествоРабочихЧасовВПериоде = ПолучитьКоличествоРабочихЧасовВПериоде(ТаблицаДляЗаписи);
НоваяСтрока.КоличествоРабочихДнейВПериоде  = ПолучитьКоличествоРабочихДнейВПериоде(ТаблицаДляЗаписи);
НоваяСтрока.СуммаДоплаты = Окр(НоваяСтрока.ОплаченоДнейЧасов*(ТекЗначение.Оклад/НоваяСтрока.КоличествоРабочихДнейВПериоде)-ТекЗначение.СуммаОплаты,2);
КонецЦикла;
КонецПроцедуры

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
1. пошлите 2 этих значения (период и вид расчета) в функцию в качестве параметра. ваш вопрос конечно не снимается, но думаю так будет лучше.
2. по идее должно ругуться на строке "Возврат Запрос.Выполнить().Выгрузить();" - таблица значений не передается между клиентом и сервером.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн k_aleks80

  • **
  • Сообщений: 65
  • РЕПУТАЦИЯ: 14
  • КПД: 22%
  • Регистрация: 2011-09-08
  • Сайт: 
  • Профессия: Программист 1С
1) А откуда брать данные? (это модуль формы - "Форма"; И здесь ОбработкаОбъект (Тип: ДанныеФормаСтруктура) на форме не тоже самое, что ОбработкаОбъект (Тип: ВнешняяОбработка) внешней обработки). А из "ФормаНастроек" (там свой реквизит ОбработкаОбъект (Тип: ДанныеФормаСтруктура), который не идентичен аналогичному в "Форме" и ОбработкаОбъект внешней формы) я как раз и пытался заполнять реквизиты обработки (которые являются источниками данных для реквизитов обеих форм);
2) Ругается, но только при запуске приложения в тонком клиенте. В толстом - все проходит (решил отложить данную проблему пока на потом).
Добавлено: 16 Мар 2015, 14:47

Решил сделать проще. Сделал одну форму с едиными реквизитами. На форме разместил Группу в виде страницы - функционал тот же, геморрой исчез :ooifh:.

Последний раз редактировалось: k_aleks80; 16 Мар 2015, 14:47. Причина: Объединение сообщений


Теги:
 

Значение "00000000001" поля "Код" не уникально

Автор gigsonРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 6890
Последний ответ 24 Ноя 2014, 12:21
от gigson
Значение поля "Владелец" не заполнено или заполнено неверно

Автор ReclaimРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 3262
Последний ответ 16 Ноя 2015, 09:36
от cska-fanat-kz
Как в СКД вычислить значение ресурса для группировки по значениям ресурса нижестоящей группировки

Автор ОтцовскийРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 978
Последний ответ 23 Ноя 2016, 12:53
от sertak
как получить значение реквизита "Код" в обработке "ПодборНоменклатуры" в УТ10.3

Автор JalibРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1095
Последний ответ 02 Дек 2016, 12:58
от Jalib
При создании нового документа "Заявка на кассовый расход" Ошибка "Значение 9 поля "номер" не уникально

Автор ppkmliteРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 8573
Последний ответ 22 Ноя 2014, 04:50
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
133 Сообщений
AIFrame
73 Сообщений
alex0402
52 Сообщений
ilyay ilyay
51 Сообщений
andron81_81
44 Сообщений
oleg-x
35 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 199
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal