|   |   | 
| 
 | v7: ПриОткрытии() как заставить 1с 7.7 сохранить изменения? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Invzor 09.12.13✎ 14:17 | 
        Здравствуйте.
 Можете подсказать... не пойму почему 1с 7.7 не сохраняет изменения... Есть справочник "договор", в нем есть предопределенныя процедура ПриОткрытии() ... там записана маленькая проверка... проверку проходит все в порядке... далее он заносит в справочник в реквизит определенное значение... - это тоже срабатывает... а вот нажимаешь на крестик закрыть договор.. он молча закрывает и не предлагает сохранить... а если что-то руками попытаться исправить.. то он уже предлагает сохранить.. когда закрываешь его... можно как-то это исправить? | |||
| 1
    
        1Сергей 09.12.13✎ 14:19 | 
        покажи код ПриОткрытии()     | |||
| 2
    
        Ёпрст гуру 09.12.13✎ 14:20 | 
        Значение поди периодики, да ?     | |||
| 3
    
        Invzor 09.12.13✎ 14:21 | 
        периодические есть значения     | |||
| 4
    
        Invzor 09.12.13✎ 14:21 | 
        сейчас скину     | |||
| 5
    
        Invzor 09.12.13✎ 14:22 | 
        Процедура ПриОткрытии()   
 СпрИдентификаторов = создатьОбъект("Справочник.Идентификатор"); ТабОборудование.Очистить(); ТабОборудование.НоваяКолонка("Наименование",,,,,,,1); ТабОборудование.НоваяКолонка("Контрагент", "Справочники.Контрагенты",,,,15); ТабОборудование.НоваяКолонка("Адрес","Строка",50); ТабОборудование.НоваяКолонка("Договор", "Справочники.Договоры",,,,15); ТабОборудование.НоваяКолонка("Вид", "Справочники.ГазовоеОборудование",,,,15); ТабОборудование.НоваяКолонка("Количество", "Число",,,,6); ТабОборудование.НоваяКолонка("Цена", "Число",12,2,,6); ТабОборудование.НоваяКолонка("Сумма", "Число",12,2,,6); ТабОборудование.НоваяКолонка("НДС", "Число",12,2,,6); ТабОборудование.НоваяКолонка("Всего", "Число",12,2,,6); ТабОборудование.НоваяКолонка("К2", "Число",4,2,,6); ТабОборудование.НоваяКолонка("ДО", "Строка",,,"Дата обслуж.",3); ТабОборудование.ВидимостьКолонки("Наименование",0); ТабОборудование.ВидимостьКолонки("К2",0); Оборудование = СоздатьОбъект("Справочник.ГазовоеОборудование"); УчитыватьНДС = 0; Если ЭтапыРабот = 0 Тогда ЭтапыРабот = 1; КонецЕсли; ДатаТарифа = ДатаЗаключения; //Если ДатаПролонгации.Получить(ТекущаяДата()) > ДатаЗаключения Тогда // ДатаТарифа = ДатаПролонгации.Получить(ТекущаяДата()); //КонецЕсли; Если ВидДоговора.Выбран()=1 Тогда Если (ВидДоговора.Вид <> Перечисление.ВидДоговора.Тройственный) или (ПустоеЗначение(ДоговорКонтрагента) = 0) Тогда Оборудование.ИспользоватьВладельца(ТекущийЭлемент()); Оборудование.ВыбратьЭлементы(); Если ПустоеЗначение(ДоговорКонтрагента)=0 Тогда ДатаТарифа = ДоговорКонтрагента.ДатаЗаключения; //Если ДоговорКонтрагента.ДатаПролонгации.Получить(ТекущаяДата()) > ДоговорКонтрагента.ДатаЗаключения Тогда // ДатаТарифа = ДоговорКонтрагента.ДатаПролонгации.Получить(ТекущаяДата()); //КонецЕсли; КонецЕсли; Пока Оборудование.ПолучитьЭлемент()=1 Цикл Если Оборудование.ПометкаУдаления() = 0 Тогда ТабОборудование.НоваяСтрока(); ТабОборудование.Контрагент = Оборудование.Владелец.Владелец; ТабОборудование.Договор = Оборудование.Владелец; ТабОборудование.Вид = Оборудование.Вид; ТабОборудование.Количество = Оборудование.ВЭксплуатации; ТабОборудование.К2 = Оборудование.К2; ПорядокХраненияОтпускнойЦены = Оборудование.Вид.ПорядокХраненияОтпускнойЦены; Ставка = Оборудование.Вид.ПолучитьАтрибут("СтавкаНДС").Получить(ДатаЗаключения); Если ПустоеЗначение(ВариантРасчетаНалогов.СтавкаНДС) = 0 Тогда Ставка = ВариантРасчетаНалогов.СтавкаНДС; КонецЕсли; Количество = ТабОборудование.Количество; Если ПорядокХраненияОтпускнойЦены = 2 Тогда ТабОборудование.Цена = Оборудование.Вид.Цена.Получить(ДатаТарифа)*100/(100+Ставка.Ставка); ТабОборудование.Всего = Оборудование.Вид.Цена.Получить(ДатаТарифа)*Количество; ТабОборудование.НДС = ТабОборудование.Всего - ТабОборудование.Цена*Количество; ТабОборудование.Сумма = ТабОборудование.Всего - ТабОборудование.НДС; Иначе ТабОборудование.Цена = Оборудование.Вид.Цена.Получить(ДатаТарифа); ТабОборудование.Сумма = Количество * ТабОборудование.Цена; ТабОборудование.НДС = ТабОборудование.Сумма*Ставка.Ставка/100; ТабОборудование.Всего = ТабОборудование.Сумма + ТабОборудование.НДС; КонецЕсли; УчитыватьНДС = УчитыватьНДС + ТабОборудование.НДС; ТабОборудование.ДО = ""; Периодический = СоздатьОбъект("Периодический"); Периодический.ИспользоватьОбъект("ДатаОбслуживания", Оборудование.ТекущийЭлемент()); Периодический.ВыбратьЗначения(ДатаЗаключения, ТекущаяДата()); Колво = 0; Пока Периодический.ПолучитьЗначение()=1 Цикл ТабОборудование.ДО = ТабОборудование.ДО + " " + Периодический.Значение; КонецЦикла; // ТабОборудование.ДО = Оборудование.ДатаОбслуживания.Получить(ТекущаяДата()); КонецЕсли; КонецЦикла; ТабОборудование.ВидимостьКолонки("Контрагент",0); Если ((ВидДоговора.Вид = Перечисление.ВидДоговора.СПГ) или (ВидДоговора.Вид = Перечисление.ВидДоговора.СВГО)) и (Владелец.ВидКонтрагента=Перечисление.ВидыКонтрагентов.Организация) Тогда СвернутьДоговор(); КонецЕсли; Иначе Если (ПустоеЗначение(ДоговорКонтрагента) = 1) Тогда Дог = ТекущийЭлемент(); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Оборудование=Справочник.ГазовоеОборудование.ТекущийЭлемент; |Владелец=Справочник.ГазовоеОборудование.Владелец.ДоговорКонтрагента.ТекущийЭлемент; |Условие(Владелец=Дог); |Обрабатывать НеПомеченныеНаУдаление; |Группировка Оборудование;"; Если Запрос.Выполнить(ТекстЗапроса) = 1 Тогда Пока Запрос.Группировка("Оборудование")=1 Цикл ТабОборудование.НоваяСтрока(); ТабОборудование.Контрагент = Запрос.Оборудование.Владелец.Владелец; ТабОборудование.Адрес = ТабОборудование.Контрагент.ЮридическийАдрес; ТабОборудование.Договор = Запрос.Оборудование.Владелец; ТабОборудование.Вид = Запрос.Оборудование.Вид; ТабОборудование.Количество = Запрос.Оборудование.ВЭксплуатации; ПорядокХраненияОтпускнойЦены = Запрос.Оборудование.Вид.ПорядокХраненияОтпускнойЦены; Ставка = Запрос.Оборудование.Вид.ПолучитьАтрибут("СтавкаНДС").Получить(ДатаЗаключения); Если ПустоеЗначение(ВариантРасчетаНалогов.СтавкаНДС) = 0 Тогда Ставка = ВариантРасчетаНалогов.СтавкаНДС; КонецЕсли; Количество = ТабОборудование.Количество; Если ПорядокХраненияОтпускнойЦены = 2 Тогда ТабОборудование.Цена = Запрос.Оборудование.Вид.Цена.Получить(ДатаТарифа)*100/(100+Ставка.Ставка); ТабОборудование.Всего = Запрос.Оборудование.Вид.Цена.Получить(ДатаТарифа)*Количество; ТабОборудование.НДС = ТабОборудование.Всего - ТабОборудование.Цена*Количество; ТабОборудование.Сумма = ТабОборудование.Всего - ТабОборудование.НДС; Иначе ТабОборудование.Цена = Запрос.Оборудование.Вид.Цена.Получить(ДатаТарифа); ТабОборудование.Сумма = Количество * ТабОборудование.Цена; ТабОборудование.НДС = ТабОборудование.Сумма*Ставка.Ставка/100; ТабОборудование.Всего = ТабОборудование.Сумма + ТабОборудование.НДС; КонецЕсли; УчитыватьНДС = УчитыватьНДС + ТабОборудование.НДС; ТабОборудование.ДО = ""; Периодический = СоздатьОбъект("Периодический"); Периодический.ИспользоватьОбъект("ДатаОбслуживания", Оборудование.ТекущийЭлемент()); Периодический.ВыбратьЗначения(ДатаЗаключения, ТекущаяДата()); Колво = 0; Пока Периодический.ПолучитьЗначение()=1 Цикл ТабОборудование.ДО = ТабОборудование.ДО + " " + Периодический.Значение; КонецЦикла; // ТабОборудование.ДО = Запрос.Оборудование.ДатаОбслуживания.Получить(ТекущаяДата()); КонецЦикла; КонецЕсли; КонецЕсли; ТабОборудование.ВидимостьКолонки("Контрагент",1); КонецЕсли; ТабОборудование.Выгрузить(ТабКонтрагентов); ТабКонтрагентов.Свернуть("Контрагент, Договор, Адрес", ""); ТабКонтрагентов.Сортировать("+Адрес"); Если Группировать = 1 Тогда ТабОборудование.Свернуть("Вид,Цена","Количество,НДС,Сумма,Всего,ДО"); КонецЕсли; ТабОборудование.ВидимостьКолонки("Количество",1); ТабОборудование.ВидимостьКолонки("НДС",?(УчитыватьНДС>0,1,0)); ТабОборудование.ВидимостьКолонки("Договор",0); ТабОборудование.ВидимостьКолонки("Адрес",0); КонецЕсли; НазначениеВидимыхОбъектов(); //_____________________________________________________________________________ // доработка. штрихкод Сплошная идентификация договаора Если СокрЛП(Строка(ИдентификаторШтриха)) = "" тогда СпрИдентификаторов.Новый(); СпрИдентификаторов.Записать(); ИдентификаторШтриха = СпрИдентификаторов.ТекущийЭлемент(); СОобщить(ИдентификаторШтриха); Комментарий = "+штрих"; КонецЕсли; //_______________Конец Доработки Штрихкодов____________________________________ КонецПроцедуры // ПриОткрытии() | |||
| 6
    
        Invzor 09.12.13✎ 14:22 | 
        здесь только вот в этом куске вопрос:
 Если СокрЛП(Строка(ИдентификаторШтриха)) = "" тогда СпрИдентификаторов.Новый(); СпрИдентификаторов.Записать(); ИдентификаторШтриха = СпрИдентификаторов.ТекущийЭлемент(); СОобщить(ИдентификаторШтриха); Комментарий = "+штрих"; КонецЕсли; //_______________Конец Доработки Штрихкодов____________________________________ КонецПроцедуры // ПриОткрытии() | |||
| 7
    
        Invzor 09.12.13✎ 14:23 | 
        Комментарий = "+штрих"; - вносит эти значения... но при закрытии не предлагает сохранять... просто закрывает и не сохраняет ессно     | |||
| 8
    
        Ёпрст гуру 09.12.13✎ 14:25 | 
        Комментарий - это что ?     | |||
| 9
    
        Ёпрст гуру 09.12.13✎ 14:25 | 
        поди просто реквизит формы, а не реквизит справочника, да ?     | |||
| 10
    
        Ёпрст гуру 09.12.13✎ 14:25 | 
        :))     | |||
| 11
    
        Invzor 09.12.13✎ 14:25 | 
        нет     | |||
| 12
    
        Ёпрст гуру 09.12.13✎ 14:26 | 
        (11)  че нет ?     | |||
| 13
    
        Invzor 09.12.13✎ 14:26 | 
        ИдентификаторШтриха = СпрИдентификаторов.ТекущийЭлемент(); 
 Идентификатор - реквизит и коммент реквизит... а не сохраняет ... | |||
| 14
    
        Ёпрст гуру 09.12.13✎ 14:26 | 
        И где вас учат вот так писать ?
 СокрЛП(Строка(ИдентификаторШтриха)) = "" | |||
| 15
    
        Ёпрст гуру 09.12.13✎ 14:26 | 
        Еше раз, что такое Комментарий ?
 Реквизит справочника, Реквизит формы ? | |||
| 16
    
        Invzor 09.12.13✎ 14:27 | 
        да это уже что только не пробывал потом...     | |||
| 17
    
        Invzor 09.12.13✎ 14:27 | 
        вот и налепил     | |||
| 18
    
        Ёпрст гуру 09.12.13✎ 14:27 | 
        И еще.. присвоение новых значений надо писать во ВВодНового, а не в ПриОткрытии..     | |||
| 19
    
        Invzor 09.12.13✎ 14:29 | 
        мне при вводе не нужно...     | |||
| 20
    
        Ёпрст гуру 09.12.13✎ 14:29 | 
        ^))     | |||
| 21
    
        Invzor 09.12.13✎ 14:30 | 
        нужно что бы при открытии элемента справчника проверялся элемент и если условия подходят вносил в определенные реквизиты значения     | |||
| 22
    
        Ёпрст гуру 09.12.13✎ 14:30 | 
        Как это не нужно ?
 А потом чего, каждый раз будешь элемент открывать, чтоб быть уверенным, что твой реквизит заполнился/записался ? | |||
| 23
    
        Invzor 09.12.13✎ 14:30 | 
        значения вносятся... но не сохраняются...     | |||
| 24
    
        Ёпрст гуру 09.12.13✎ 14:30 | 
        :)     | |||
| 25
    
        Ёпрст гуру 09.12.13✎ 14:31 | 
        Еще раз, что есть Комментарий ?
 Какой у него тип, периодический ли он, ежели это всё же реквизит справочника и т.д.. | |||
| 26
    
        Invzor 09.12.13✎ 14:32 | 
        непериодический реквизит справочника...
 ИдентификаторШтриха - непереодический реквезит справочника тип СПРАВОЧНИК | |||
| 27
    
        Invzor 09.12.13✎ 14:32 | 
        комментарий - тип СТРОКА     | |||
| 28
    
        Злопчинский 09.12.13✎ 14:32 | 
        Ёпрст, может нам курсы открыть...? ;-) такие.. простенькие... с веником и лопатой.. учить людей отвечать на вопросы.. ;-0)     | |||
| 29
    
        Ёпрст гуру 09.12.13✎ 14:33 | 
        (28) лучше курсы по поиску..     | |||
| 30
    
        Ёпрст гуру 09.12.13✎ 14:34 | 
        (26) 
 Перем Комментарий; в коде есть ? | |||
| 31
    
        Ёпрст гуру 09.12.13✎ 14:35 | 
        + Это форма чего хоть ?
 Форма Элемента/Списка Справочника ? | |||
| 32
    
        Ёпрст гуру 09.12.13✎ 14:35 | 
        Что написано в ПриЗакрытии ?
 + ВК используешь ? типа turbomd. к примеру ? | |||
| 33
    
        Lazy Stranger 09.12.13✎ 14:36 | 
        на форме есть этот комментарий?
 если нет - оно может не считать что данные модифицированы | |||
| 34
    
        Invzor 09.12.13✎ 14:36 | 
        Форма Элемента. В  Перем Комментарий - нет в коде.... нужно объявлять, если работаешь в этом же справочнике?     | |||
| 35
    
        Invzor 09.12.13✎ 14:37 | 
        На форме есть этот "Комментарий" и "Идентификатор"     | |||
| 36
    
        Ёпрст гуру 09.12.13✎ 14:38 | 
        (34) нет.     | |||
| 37
    
        Invzor 09.12.13✎ 14:39 | 
        при открытии он показывает на форме , что значения "идентификатор" и "коммент" внесены то что нужно.. но вот не предлагает сохранить и все     | |||
| 38
    
        КонецЦикла 09.12.13✎ 14:39 | 
        После просмотра (5) Епрст надо памятник поставить при жизни...     | |||
| 39
    
        Invzor 09.12.13✎ 14:41 | 
        (32) не использую. ПриЗакрытии нет в модуле     | |||
| 40
    
        Ёпрст гуру 09.12.13✎ 14:42 | 
        (37) Ну воткни     Форма.Обновить(1); в это условие, сразу после присвоения..     | |||
| 41
    
        Invzor 09.12.13✎ 14:43 | 
        сейчас попробую     | |||
| 42
    
        Ёпрст гуру 09.12.13✎ 14:43 | 
        будет тебе вопрос.
 А так, хз, надо пофигуратор открывать, мне лень.. я не меняю реквизиты из приОткрытии формы элемента - мот это фича такая, не устанавливать флаг модифицированности формы тама. | |||
| 43
    
        Invzor 09.12.13✎ 14:46 | 
        (40) спасибо! Помогло обновление формы! блин мелочь... а времени отняла...     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |