![]() |
![]() |
![]() |
|
Тип не определен (НастройкаПериода) Бухгалтерия 8.3 редакция 3.0 | ☑ | ||
---|---|---|---|---|
0
Glukaviy
13.05.14
✎
13:50
|
Добрый день.
Прошу помощи. Для Управляемой формы в модуле код: Перем СписокДнейНачалаМесяцев; &НаСервере Процедура ПриОткрытии(Команда) СписокДнейНачалаМесяцев = Новый СписокЗначений; ДеньМесяца = '20100101'; Для Мес = 1 По 121 Цикл СписокДнейНачалаМесяцев.Добавить(ДеньМесяца); ДеньМесяца = ДобавитьМесяц(ДеньМесяца, 1); КонецЦикла; КонецПроцедуры &НаСервере Процедура ВыбПериодНажатие(Элемент) НастройкаПериода = Новый НастройкаПериода; НастройкаПериода.УстановитьПериод(НачПериода, ?(КонПериода='0001-01-01', КонПериода, КонецДня(КонПериода))); НастройкаПериода.РедактироватьКакИнтервал = Истина; НастройкаПериода.РедактироватьКакПериод = Истина; НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период; Если НастройкаПериода.Редактировать() Тогда НачПериода = НастройкаПериода.ПолучитьДатуНачала(); КонПериода = НастройкаПериода.ПолучитьДатуОкончания(); КонецЕсли; КонецПроцедуры &НаСервере Процедура ОсновныеДействияФормыОплаченные(Команда) ТаблицаПлатежей = Новый ТаблицаЗначений; ТаблицаПлатежей.Колонки.Добавить("Договор"); ТаблицаПлатежей.Колонки.Добавить("СрокОплаты"); ТаблицаПлатежей.Колонки.Добавить("Комментарий"); ТаблицаПлатежей.Колонки.Добавить("Контрагент"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДоговорыКонтрагентов.Ссылка КАК Договор, | ДоговорыКонтрагентов.Владелец КАК Контрагент, | ДоговорыКонтрагентов.Комментарий КАК Комментарий, | ДоговорыКонтрагентов.СрокОплаты КАК СрокОплаты |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец.Родитель = &Родитель"; Запрос.УстановитьПараметр("Родитель",ЭлементыФормы.АвансДоНачалаПериода.Значение); ТаблЗапроса = Запрос.Выполнить().Выгрузить(); Для каждого СтрокаДоговора Из ТаблЗапроса Цикл Для каждого ЭлементСписка Из СписокДнейНачалаМесяцев Цикл ВозможнаяДата = ЭлементСписка.Значение; ДатаНачалаИзПериода=Неопределено; ПолноеНазваниеПериода=Неопределено; РасчитатьНачалоМесяца(СтрокаДоговора.Комментарий,ВозможнаяДата,ДатаНачалаИзПериода,ПолноеНазваниеПериода); //Для аванса до начала периода Если НЕ ДатаНачалаИзПериода = Неопределено Тогда ДатаНачалаМесяцаОплаты = ДобавитьМесяц(ДатаНачалаИзПериода,-1); ДатаПредполагаемойОплаты = ДатаНачалаМесяцаОплаты+60*60*24*(СтрокаДоговора.СрокОплаты-1); Если ЭлементыФормы.НачПериода.Значение <= ДатаПредполагаемойОплаты И ЭлементыФормы.КонПериода.Значение >= ДатаПредполагаемойОплаты Тогда СтрокаПлатежа = ТаблицаПлатежей.Добавить(); СтрокаПлатежа.Договор = СтрокаДоговора.Договор; СтрокаПлатежа.СрокОплаты = ДатаПредполагаемойОплаты; СтрокаПлатежа.Комментарий = ПолноеНазваниеПериода; СтрокаПлатежа.Контрагент = СтрокаДоговора.Контрагент; КонецЕсли; КонецЕсли; ///Для аванса до начала периода/// КонецЦикла; КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДоговорыКонтрагентов.Ссылка КАК Договор, | ДоговорыКонтрагентов.Владелец КАК Контрагент, | ДоговорыКонтрагентов.Комментарий КАК Комментарий, | ДоговорыКонтрагентов.СрокОплаты КАК СрокОплаты |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец.Родитель = &Родитель"; Запрос.УстановитьПараметр("Родитель",ЭлементыФормы.АвансТекущегоПериода.Значение); ТаблЗапроса = Запрос.Выполнить().Выгрузить(); Для каждого СтрокаДоговора Из ТаблЗапроса Цикл Для каждого ЭлементСписка Из СписокДнейНачалаМесяцев Цикл ВозможнаяДата = ЭлементСписка.Значение; ДатаНачалаИзПериода=Неопределено; ПолноеНазваниеПериода=Неопределено; РасчитатьНачалоМесяца(СтрокаДоговора.Комментарий,ВозможнаяДата,ДатаНачалаИзПериода,ПолноеНазваниеПериода); //Для АвансТекущегоПериода Если НЕ ДатаНачалаИзПериода = Неопределено Тогда //ДатаНачалаМесяцаОплаты = ДобавитьМесяц(ДатаНачалаИзПериода,-1); ДатаНачалаМесяцаОплаты = ДатаНачалаИзПериода; ДатаПредполагаемойОплаты = ДатаНачалаМесяцаОплаты+60*60*24*(СтрокаДоговора.СрокОплаты-1); Если ЭлементыФормы.НачПериода.Значение <= ДатаПредполагаемойОплаты И ЭлементыФормы.КонПериода.Значение >= ДатаПредполагаемойОплаты Тогда СтрокаПлатежа = ТаблицаПлатежей.Добавить(); СтрокаПлатежа.Договор = СтрокаДоговора.Договор; СтрокаПлатежа.СрокОплаты = ДатаПредполагаемойОплаты; СтрокаПлатежа.Комментарий = ПолноеНазваниеПериода; СтрокаПлатежа.Контрагент = СтрокаДоговора.Контрагент; КонецЕсли; КонецЕсли; ///Для АвансТекущегоПериода/// КонецЦикла; КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДоговорыКонтрагентов.Ссылка КАК Договор, | ДоговорыКонтрагентов.Владелец КАК Контрагент, | ДоговорыКонтрагентов.Комментарий КАК Комментарий, | ДоговорыКонтрагентов.СрокОплаты КАК СрокОплаты |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец.Родитель = &Родитель"; Запрос.УстановитьПараметр("Родитель",ЭлементыФормы.ПоФакту.Значение); ТаблЗапроса = Запрос.Выполнить().Выгрузить(); Для каждого СтрокаДоговора Из ТаблЗапроса Цикл Для каждого ЭлементСписка Из СписокДнейНачалаМесяцев Цикл ВозможнаяДата = ЭлементСписка.Значение; ДатаНачалаИзПериода=Неопределено; ПолноеНазваниеПериода=Неопределено; ДатаКонцаИзПериода=Неопределено; РасчитатьНачалоМесяца(СтрокаДоговора.Комментарий,ВозможнаяДата,ДатаНачалаИзПериода,ПолноеНазваниеПериода,ДатаКонцаИзПериода); //Для ПоФакту Если НЕ ДатаНачалаИзПериода = Неопределено Тогда ДатаНачалаМесяцаОплаты = НачалоДня(ДатаКонцаИзПериода+60*60*24); ДатаПредполагаемойОплаты = ДатаНачалаМесяцаОплаты+60*60*24*(СтрокаДоговора.СрокОплаты-1); Если ЭлементыФормы.НачПериода.Значение <= ДатаПредполагаемойОплаты И ЭлементыФормы.КонПериода.Значение >= ДатаПредполагаемойОплаты Тогда СтрокаПлатежа = ТаблицаПлатежей.Добавить(); СтрокаПлатежа.Договор = СтрокаДоговора.Договор; СтрокаПлатежа.СрокОплаты = ДатаПредполагаемойОплаты; СтрокаПлатежа.Комментарий = ПолноеНазваниеПериода; СтрокаПлатежа.Контрагент = СтрокаДоговора.Контрагент; КонецЕсли; КонецЕсли; ///Для ПоФакту/// КонецЦикла; КонецЦикла; ТаблицаПлатежей.Свернуть("Договор,СрокОплаты,Комментарий,Контрагент"); НомСтрок = ТаблицаПлатежей.Количество()-1; Пока НомСтрок>=0 Цикл Договор = ТаблицаПлатежей[НомСтрок].Договор; Комментарий = ТаблицаПлатежей[НомСтрок].Комментарий; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПлатежноеПоручение.Контрагент, | ПлатежноеПоручение.Ссылка, | ПлатежноеПоручение.Комментарий |ИЗ | Документ.ПлатежноеПоручение КАК ПлатежноеПоручение |ГДЕ | ПлатежноеПоручение.ДоговорКонтрагента = &ДоговорКонтрагента | И ПлатежноеПоручение.Комментарий ПОДОБНО &Комментарий | И ПлатежноеПоручение.Оплачено = ИСТИНА | И ПлатежноеПоручение.ПометкаУдаления = ЛОЖЬ"; Запрос.УстановитьПараметр("ДоговорКонтрагента",Договор); Запрос.УстановитьПараметр("Комментарий",Комментарий); Платежки = Запрос.Выполнить().Выгрузить(); Если Платежки.Количество() = 0 Тогда ТаблицаПлатежей.Удалить(НомСтрок); КонецЕсли; НомСтрок = НомСтрок-1; КонецЦикла; //Построитель = Новый ПостроительОтчета; //Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаПлатежей); //Построитель.Вывести(); // Оплаты.Загрузить(ТаблицаПлатежей); КонецПроцедуры &НаСервере Процедура ОсновныеДействияФормыОплатить(Команда) Для каждого СтрокаОплат Из Оплаты Цикл Если СтрокаОплат.Пометка Тогда ПП = Документы.ПлатежноеПоручение.СоздатьДокумент(); ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ПП, ЗначениеПеременной("ТекущийПользователь"), , , , ); ПП.Контрагент = СтрокаОплат.Контрагент; ПП.ДоговорКонтрагента = СтрокаОплат.Договор; ПП.Дата = ТекущаяДата(); ПП.Комментарий = СтрокаОплат.Комментарий; ПП.ВидПлатежа = "Оплата поставщику"; ПП.СчетКонтрагента = СтрокаОплат.Контрагент.ОсновнойБанковскийСчет; ПП.ПолучитьФорму().Открыть(); КонецЕсли; КонецЦикла; КонецПроцедуры &НаСервере Процедура КнопкаВыполнитьНажатие(Команда) ТаблицаПлатежей = Новый ТаблицаЗначений; ТаблицаПлатежей.Колонки.Добавить("Договор"); ТаблицаПлатежей.Колонки.Добавить("СрокОплаты"); ТаблицаПлатежей.Колонки.Добавить("Комментарий"); ТаблицаПлатежей.Колонки.Добавить("Контрагент"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДоговорыКонтрагентов.Ссылка КАК Договор, | ДоговорыКонтрагентов.Владелец КАК Контрагент, | ДоговорыКонтрагентов.Комментарий КАК Комментарий, | ДоговорыКонтрагентов.СрокОплаты КАК СрокОплаты |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец.Родитель = &Родитель"; Запрос.УстановитьПараметр("Родитель",ЭлементыФормы.АвансДоНачалаПериода.Значение); ТаблЗапроса = Запрос.Выполнить().Выгрузить(); Если ТаблЗапроса.Количество()>0 Тогда Для каждого СтрокаДоговора Из ТаблЗапроса Цикл Для каждого ЭлементСписка Из СписокДнейНачалаМесяцев Цикл ВозможнаяДата = ЭлементСписка.Значение; ДатаНачалаИзПериода=Неопределено; ПолноеНазваниеПериода=Неопределено; РасчитатьНачалоМесяца(СтрокаДоговора.Комментарий,ВозможнаяДата,ДатаНачалаИзПериода,ПолноеНазваниеПериода); //Для аванса до начала периода Если НЕ ДатаНачалаИзПериода = Неопределено Тогда ДатаНачалаМесяцаОплаты = ДобавитьМесяц(ДатаНачалаИзПериода,-1); ДатаПредполагаемойОплаты = ДатаНачалаМесяцаОплаты+60*60*24*(СтрокаДоговора.СрокОплаты-1); Если ЭлементыФормы.НачПериода.Значение <= ДатаПредполагаемойОплаты И ЭлементыФормы.КонПериода.Значение >= ДатаПредполагаемойОплаты Тогда СтрокаПлатежа = ТаблицаПлатежей.Добавить(); СтрокаПлатежа.Договор = СтрокаДоговора.Договор; СтрокаПлатежа.СрокОплаты = ДатаПредполагаемойОплаты; СтрокаПлатежа.Комментарий = ПолноеНазваниеПериода; СтрокаПлатежа.Контрагент = СтрокаДоговора.Контрагент; КонецЕсли; КонецЕсли; ///Для аванса до начала периода/// КонецЦикла; КонецЦикла; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДоговорыКонтрагентов.Ссылка КАК Договор, | ДоговорыКонтрагентов.Владелец КАК Контрагент, | ДоговорыКонтрагентов.Комментарий КАК Комментарий, | ДоговорыКонтрагентов.СрокОплаты КАК СрокОплаты |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец.Родитель = &Родитель"; Запрос.УстановитьПараметр("Родитель",ЭлементыФормы.АвансТекущегоПериода.Значение); ТаблЗапроса = Запрос.Выполнить().Выгрузить(); Если ТаблЗапроса.Количество()>0 Тогда Для каждого СтрокаДоговора Из ТаблЗапроса Цикл Для каждого ЭлементСписка Из СписокДнейНачалаМесяцев Цикл ВозможнаяДата = ЭлементСписка.Значение; ДатаНачалаИзПериода=Неопределено; ПолноеНазваниеПериода=Неопределено; РасчитатьНачалоМесяца(СтрокаДоговора.Комментарий,ВозможнаяДата,ДатаНачалаИзПериода,ПолноеНазваниеПериода); //Для АвансТекущегоПериода Если НЕ ДатаНачалаИзПериода = Неопределено Тогда //ДатаНачалаМесяцаОплаты = ДобавитьМесяц(ДатаНачалаИзПериода,-1); ДатаНачалаМесяцаОплаты = ДатаНачалаИзПериода; ДатаПредполагаемойОплаты = ДатаНачалаМесяцаОплаты+60*60*24*(СтрокаДоговора.СрокОплаты-1); Если ЭлементыФормы.НачПериода.Значение <= ДатаПредполагаемойОплаты И ЭлементыФормы.КонПериода.Значение >= ДатаПредполагаемойОплаты Тогда СтрокаПлатежа = ТаблицаПлатежей.Добавить(); СтрокаПлатежа.Договор = СтрокаДоговора.Договор; СтрокаПлатежа.СрокОплаты = ДатаПредполагаемойОплаты; СтрокаПлатежа.Комментарий = ПолноеНазваниеПериода; СтрокаПлатежа.Контрагент = СтрокаДоговора.Контрагент; КонецЕсли; КонецЕсли; ///Для АвансТекущегоПериода/// КонецЦикла; КонецЦикла; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДоговорыКонтрагентов.Ссылка КАК Договор, | ДоговорыКонтрагентов.Владелец КАК Контрагент, | ДоговорыКонтрагентов.Комментарий КАК Комментарий, | ДоговорыКонтрагентов.СрокОплаты КАК СрокОплаты |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец.Родитель = &Родитель"; Запрос.УстановитьПараметр("Родитель",ЭлементыФормы.ПоФакту.Значение); ТаблЗапроса = Запрос.Выполнить().Выгрузить(); Если ТаблЗапроса.Количество()>0 Тогда Для каждого СтрокаДоговора Из ТаблЗапроса Цикл Для каждого ЭлементСписка Из СписокДнейНачалаМесяцев Цикл ВозможнаяДата = ЭлементСписка.Значение; ДатаНачалаИзПериода=Неопределено; ПолноеНазваниеПериода=Неопределено; ДатаКонцаИзПериода=Неопределено; РасчитатьНачалоМесяца(СтрокаДоговора.Комментарий,ВозможнаяДата,ДатаНачалаИзПериода,ПолноеНазваниеПериода,ДатаКонцаИзПериода); //Для ПоФакту Если НЕ ДатаНачалаИзПериода = Неопределено Тогда ДатаНачалаМесяцаОплаты = НачалоДня(ДатаКонцаИзПериода+60*60*24); ДатаПредполагаемойОплаты = ДатаНачалаМесяцаОплаты+60*60*24*(СтрокаДоговора.СрокОплаты-1); Если ЭлементыФормы.НачПериода.Значение <= ДатаПредполагаемойОплаты И ЭлементыФормы.КонПериода.Значение >= ДатаПредполагаемойОплаты Тогда СтрокаПлатежа = ТаблицаПлатежей.Добавить(); СтрокаПлатежа.Договор = СтрокаДоговора.Договор; СтрокаПлатежа.СрокОплаты = ДатаПредполагаемойОплаты; СтрокаПлатежа.Комментарий = ПолноеНазваниеПериода; СтрокаПлатежа.Контрагент = СтрокаДоговора.Контрагент; КонецЕсли; КонецЕсли; ///Для ПоФакту/// КонецЦикла; КонецЦикла; КонецЕсли; ТаблицаПлатежей.Свернуть("Договор,СрокОплаты,Комментарий,Контрагент"); НомСтрок = ТаблицаПлатежей.Количество()-1; Пока НомСтрок>=0 Цикл Договор = ТаблицаПлатежей[НомСтрок].Договор; Комментарий = ТаблицаПлатежей[НомСтрок].Комментарий; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПлатежноеПоручение.Контрагент, | ПлатежноеПоручение.Ссылка, | ПлатежноеПоручение.Комментарий |ИЗ | Документ.ПлатежноеПоручение КАК ПлатежноеПоручение |ГДЕ | ПлатежноеПоручение.ДоговорКонтрагента = &ДоговорКонтрагента | И ПлатежноеПоручение.Комментарий ПОДОБНО &Комментарий | И ПлатежноеПоручение.Оплачено = ИСТИНА | И ПлатежноеПоручение.ПометкаУдаления = ЛОЖЬ"; Запрос.УстановитьПараметр("ДоговорКонтрагента",Договор); Запрос.УстановитьПараметр("Комментарий",Комментарий); Платежки = Запрос.Выполнить().Выгрузить(); Если НЕ Платежки.Количество() = 0 Тогда ТаблицаПлатежей.Удалить(НомСтрок); КонецЕсли; НомСтрок = НомСтрок-1; КонецЦикла; //Построитель = Новый ПостроительОтчета; //Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаПлатежей); //Построитель.Вывести(); // Оплаты.Загрузить(ТаблицаПлатежей); КонецПроцедуры Выдается ошибка: {Форма.Форма.Форма(13,29)}: Тип не определен (НастройкаПериода) НастройкаПериода = Новый <<?>>НастройкаПериода; (Проверка: Сервер) Как быть? что я не так делаю? Бухгалтерия 8.3 редакция 3.0 |
|||
1
shuhard
13.05.14
✎
14:47
|
(0) НастройкаПериода (PeriodSettings)
Доступность: Толстый клиент. ни о чем не говорит ? |
|||
2
Glukaviy
13.05.14
✎
14:59
|
Если честно, нет. я только начинаю программировать на 1С, если можно подскажите что я делаю не правильно?
|
|||
3
Nenaviwu1c20
13.05.14
✎
15:02
|
Ты пишешь на тонком клиенте,при этом то что ты хочешь использовать предназначенно для толстого клиента, то есть Обычные формы.
|
|||
4
Glukaviy
13.05.14
✎
15:06
|
А как понять что я пишу на тонком клиенте?
Как быть что исправить надо? |
|||
5
shuhard
13.05.14
✎
15:08
|
(4) ну нет этой х-ни в УФ, совсем
|
|||
6
Glukaviy
13.05.14
✎
15:09
|
shuhard
Как быть тогда? |
|||
7
Glukaviy
13.05.14
✎
15:09
|
ДиалогРедактированияСтандартногоПериода использовать?
|
|||
8
Nenaviwu1c20
13.05.14
✎
15:12
|
не юзал но нарыл.Попробуй
|
|||
9
shuhard
13.05.14
✎
15:12
|
(6) открыть типовую и перестать изобретать велокаты
|
|||
10
Glukaviy
13.05.14
✎
15:15
|
Не работает типовая... почему-то...
|
|||
11
Glukaviy
13.05.14
✎
15:16
|
У меня есть внешняя обработка, которую я пытаюсь переписать. так как она открывается пустым окном в 3.0
|
|||
12
Glukaviy
13.05.14
✎
15:16
|
Обработка как раз типовая
|
|||
13
shuhard
13.05.14
✎
15:18
|
(11) ну нельзя же взять обработку от толстого клиента и запустить под тонким
|
|||
14
Холодильник
13.05.14
✎
15:21
|
открываешь отчет Оборотки по счетам и бездумно начинаешь копировать оттуда все, что связано с установкой периода
|
|||
15
Glukaviy
13.05.14
✎
15:22
|
shuhard
Так как тогда быть? Может поможете? |
|||
16
shuhard
13.05.14
✎
15:23
|
(15) даже не думай
|
|||
17
Glukaviy
13.05.14
✎
15:23
|
Холодильник
Попробую спасибо. |
|||
18
Glukaviy
13.05.14
✎
15:23
|
shuhard
Не буду |
|||
19
Glukaviy
13.05.14
✎
18:02
|
Кто может помочь?
|
|||
20
hhhh
13.05.14
✎
21:44
|
(19) у тебя типовая БП 3.0 под рукой. Там десятки обработок. Выбор периода в них точно встречается. Очки только одень.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |