MOZ06601

Відповісти
OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

MOZ06601

Повідомлення OlegBom » 01 серпня 2016, 19:14

Выгрузка 066 форм в МЕдок и прочих программ.

Не заполняется поле N135 , следующей командой (остальные поля проблем нет)
omain:setProperty("FldVal","N135" ,'Гриженко Г.М.')

И по команде oDoc:Refresh(), которая согласно описанию (Полный пересчет документа, аналог нажатия F5-F6 ), не происходит обновление полей N136 и N38.
А когда в Медке нажать F5, то поля обновляются.

В чем проблема? Вопрос срочный, так как до 15 августа больнице надо завести несколько тысяч 066 - форм.
Закачка очень бы облегчила работу.

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: MOZ06601

Повідомлення Inkognito » 02 серпня 2016, 11:19

ЗображенняЗображення

ЗображенняЗображення

Нет таких полей в описании шаблона.
Описание полей находится в файлах с расширением " *.xfld" в каталоге ТМПЛ медка (локального или серверного, но не станции).

faustpatron
Повідомлень: 545
З нами з: 23 травня 2016, 14:32
Звідки: Оттуда

Re: MOZ06601

Повідомлення faustpatron » 02 серпня 2016, 11:24

Inkognito писав:ЗображенняЗображення

ЗображенняЗображення

Нет таких полей в описании шаблона.
Описание полей находится в файлах с расширением " *.xfld" в каталоге ТМПЛ медка (локального или серверного, но не станции).


+
Шаман-извращенец вызвал золотой дождь

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: MOZ06601

Повідомлення Inkognito » 02 серпня 2016, 11:32

Doc.Refresh(), если быть точным, вызывает процедуры, записанные в Медке в файле "MOZ06601.bas", где *.bas - скрипты, написанные в дизайнере отчетов, в зашифрованном виде. Системные и уникальные процедуры именно в нем. Если там есть обновление указанных полей, то и из СОМ, и из документа заполненнего вручную, команды будут вызваны (без вариантов), и отработаны одинаково. Смотрите все же в идентификаторы полей, там где-то ошибка, т.к. Вы сначала пишете про код 135, а потом про 136. Наверно и 38 код перепутан с другим.

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: MOZ06601

Повідомлення OlegBom » 02 серпня 2016, 12:06

По поводу отсутствия полей.
Я вас сильно расстрою, в форме MOZ06601 при нажатии кнопки F11- електронна форма, есть эти поля
поле [N135] - Прізвище, імя, по батькові. Это поле не хочет заполняться с помощью COM- обьекта.

поле [N38] -Діагноз при госпіталізації
поле [N116] - Діагноз при госпіталізації:(код за МКХ-10)
Так вот поля N38 и N116 - взаимосвязаны, вводишь одно, корректируется другое и наоборот.
Аналогичные им поля
поле [N142] - Код за МКХ-10(Основный)
поле [N136] - Найменування діагнозу (Основний)
Также поля N142 и N136 - взаимосвязаны, вводишь одно, корректируется другое и наоборот.

Я могу с помощью СОМ- обьекта заполнить поля N116 и N142. Они прекрасно заполняются.
Но я думал, что при вызове функции oDoc:Refresh() автоматически заполнятся поля N38 и N136.
Но они не заполняются. Хотя , если я открою закачанную форму 066 в Медке и нажму F5, то эти поля обновятся.

Таким образом у меня две проблемы.
1) Не могу заполнить поле [N135] - Прізвище, імя, по батькові
2) И не подтягиваются названия болезней(поля N38 и N136) при обновлении oDoc:Refresh().
Что не так?

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: MOZ06601

Повідомлення Inkognito » 02 серпня 2016, 12:20

Разработчики Медка могут удивить. Как раз наш случай. Смогу попробовать проявить только после 21.00
П.С. куда-то пропало меню "Показати бланк", чудеса. Раньше точно была в меню "Файл".

faustpatron
Повідомлень: 545
З нами з: 23 травня 2016, 14:32
Звідки: Оттуда

Re: MOZ06601

Повідомлення faustpatron » 02 серпня 2016, 12:36

Inkognito писав:Разработчики Медка могут удивить. Как раз наш случай. Смогу попробовать проявить только после 21.00
П.С. куда-то пропало меню "Показати бланк", чудеса. Раньше точно была в меню "Файл".


это только для первички, есть такая функция "Показати бланк" , кстати в ""XFLD"" нашел вышеуказанные поля
Шаман-извращенец вызвал золотой дождь

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: MOZ06601

Повідомлення OlegBom » 02 серпня 2016, 13:35

Столкнулся с большой проблемой!
Сколько бы не закачивал форм 066 в Медок (одну, две, десять) всегда в Медке только одна форма - ПОСЛЕДНЯЯ.
Не помогает, перезайти в Медок.

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: MOZ06601

Повідомлення Inkognito » 02 серпня 2016, 13:53

OlegBom
"Эта службишка не служба. Служба, брат, вся впереди." (с), м/ф "Конек-горбунок".
Это разработчики не догадались поставить флажок "Може дублюватися в рамках періоду".
Берем IBExpert, находим таблицу FORM, находим нужный бланк, и устанавливаем CanDuplicate=1
См. мое сообщение годовой давности: http://www.me-doc.com.ua/forum/viewtopi ... te#p151181
Не ждите чуда, чудите сами :)
Открывайте таблицу FORM, и ставьте необходимый признак (CANDUPLICATE = 1) для формы F30001001.
ЗображенняЗображення

Разработчики, если и поправят, то не скоро. В прошлый раз им понадобилось 3 недели.

П.С. по идее, можно попробовать сделать то же самое методом set Dict = App.GetDictionary("FORM"), см.инструкцию.

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: MOZ06601

Повідомлення OlegBom » 02 серпня 2016, 15:37

Спасибо!
>П.С. по идее, можно попробовать сделать то же самое методом set Dict = App.GetDictionary("FORM"), см.инструкцию.

перечитал всю инструкцию по СОМ обьектам, не понял как это сделать :(

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: MOZ06601

Повідомлення Inkognito » 02 серпня 2016, 15:38

Раздел "Робота з довідниками", страница 8.
Синтаксис 1С, вроде такой (не проверял) | Показать
Dict = App.GetDictionary();
tabl = Dict.Open("FORM");
tabl.Filter=Строка("CharCode=MOZ06601");
tabl.First();
Если tabl.RecordCount()<>1 Тогда
Возврат;
КонецЕсли;

Пока НЕ tabl.EOF Цикл
tabl.Edit();
tabl.Fields.Item("CanDuplicate").Value =1;
tabl.Post();
КонеЦЦикла;

Dict.Save() ;

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: MOZ06601

Повідомлення OlegBom » 02 серпня 2016, 17:19

Пока, что-то не получается!!!

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: MOZ06601

Повідомлення Inkognito » 03 серпня 2016, 08:22

Создание документа программно | Показать
Если App = Неопределено Тогда
Попытка
App = Новый COMОбъект("MEDOC.ZApplication");
Исключение
Предупреждение("Медок не запущен");
Возврат;
КонецПопытки;
КонецЕсли;

PDate= Дата(Год(ТекущаяДата()), Месяц(ТекущаяДата()), 01);
ИД=Строка(Новый УникальныйИдентификатор);

Doc = App.OpenOrCreateByExDocID("MOZ06601", 0, PDate, , ИД, 0);
Doc.DisableScripts();
rsMain = Doc.DataSets();
rsMain.Clear(true);
rsMain.Edit();

rsMain.Fields.Item("N38").Value = "Тест1";
rsMain.Fields.Item("N116").Value = "Тест1";

rsMain.Fields.Item("N142").Value = "Тест2";
rsMain.Fields.Item("N136").Value = "Тест2";

rsMain.Append();
rsMain.Post();

Doc.Save();
Doc.Close();

App.ShowDocument(ИД);

ЗображенняЗображення
Установка признака дублирования | Показать
//откроем таблицу форм
Dict = App.GetDictionary();
tabl = Dict.Open("FORM");
tabl.Filter=Строка("CharCode='MOZ06601'");
tabl.First();

Пока НЕ tabl.EOF Цикл
tabl.Edit();
//выведем на экран
Сообщить("MOZ06601 CanDuplicate="+tabl.Fields.Item("CanDuplicate").Value);
//установим 1
tabl.Fields.Item("CanDuplicate").Value ="1";
tabl.Post();
tabl.Next();
КонецЦикла;

isReadOnly = Dict.IsReadOnly(); //проверим, доступен ли для записи
Если НЕ isReadOnly Тогда //если доступен, пробуем сохранить
Dict.Save();
КонецЕсли;
//-------------------------тоже самое, только просто проверим, сохранился ли признак. Без сохранения
Dict = App.GetDictionary();
tabl = Dict.Open("FORM");
tabl.Filter=Строка("CharCode='MOZ06601'");
tabl.First();

Пока НЕ tabl.EOF Цикл
Сообщить("MOZ06601 CanDuplicate="+tabl.Fields.Item("CanDuplicate").Value);
tabl.Next();
КонецЦикла;
П.С. сначала вроде получалось сохранить таблицу, а теперь выдает:
Ошибка при вызове метода контекста (Save)
Dict.Save();
по причине:
Неизвестная ошибка

Попробую вечером перестартовать службу Медка. И попробовать сохранять, когда нет пользователей. Если у Вас локальный Медок, по идее ошибки не должно возникнуть. Буду рад услышать, помог ли этот код.
П.С. правьте ИБЭкспетром, это быстрее чем вылавливать чужие ошибки в коде

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: MOZ06601

Повідомлення OlegBom » 04 серпня 2016, 22:20

СПасибо! ИБЭкспетром получилось исправить! Этот вопрос решён

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: MOZ06601

Повідомлення OlegBom » 04 серпня 2016, 22:39

А вот с заполнением полей проблема!

Не заполняется поле N135 - Прізвище, і'мя, по батькові хворого.
Побовал двумя методами.
....................................
IF 1#1 \\ - 1-й метод
odoc:=omedok:CreateDocumentByParam("MOZ06601",0,DTOC(dDate),1)
omain:=odoc:DataSets("MAIN")
odoc:UpdateSysFields()
ELSE \\ - 2-й метод
odoc:= omedok:OpenOrCreateByExDocID("MOZ06601", 0,DTOC(dDate), ,STR((DC)->koddoc), 0)
oDoc:DisableScripts()
omain:= oDoc:DataSets()
omain:Clear(.T.)
ENDIF
omain:Edit()
omain:setProperty("FldVal","N8" ,dDate)
omain:setProperty("FldVal","N133" ,cNumber)
omain:setProperty("FldVal","N11" ,dDateGP)
omain:setProperty("FldVal","N135" ,cFIO)

........

Все поля заполняются, кроме N135. Данные проверил, передаются (сFIO- заполняется)
Что еще смотреть? Не могу придумать.

Inkognito
Повідомлень: 1067
З нами з: 14 січня 2012, 14:26

Re: MOZ06601

Повідомлення Inkognito » 04 серпня 2016, 23:19

rsMain.Fields.Item("N135").Value = "Иванов Иван Иванович";

ЗображенняЗображення

Может, у Вас это тип значения "Ссылка", а не "строка"? Попробуйте привести к string(), передача СОМ технологией очень щепетильна к типам принимаемых данных.

OlegBom
Повідомлень: 78
З нами з: 05 липня 2012, 17:07

Re: MOZ06601

Повідомлення OlegBom » 05 серпня 2016, 22:00

Очень интересный разговор у нас на форуме происходит! Вроде бы тема и направление новые для разработчика, а он даже и не участвует.
Или разработчики Медка уже уволены?

Відповісти

Повернутись до “Питання по інтеграції з іншими обліковими системами”