Вопрос № 112703: Уважаемые эксперты, есть Вопрос! Платформа 7.7. Есть ли возможность посредством УРИБ: 1) Производить обмен данными в то время, как пользователи работают в 1С 2) Программно управлять обменом (запускать, задавать параметры и т.д.)...Вопрос № 112705: Хорошего настроения, уважаемые эксперты!
Вопрос по платформе 7.7.
Хочу написать "инсталляцию", которая вносила бы изменения в модули Конфигурации. Речь идет не о взломе, разумеется, а об автоматизации некоторых процессов. Я зна...Вопрос № 112796: Влпрос по работе с web-приложением:
v8Grid: как получить значение из текущей строки?
имеется v8grid с данными из справочника Контрагенты. При смене строки вызывается событие SelectedIndexChanged(). Необходимо получить код контрагента из текущ...Вопрос № 112828: Вопрос по версии 7.7 конф. Производство+Услуги+Бухгалтерия. Для выполнения свертки базы необходимо собрать остатки по регистрам.Хочу уточнить Остатки собираются по всем измерениям в регистрах остатков. В регистрах оборотов итоги не считаются? Хочу дл...Вопрос
№ 112836: Уважаимые эксперты, прошу помоч разобратся, написал модуль для инвенторизации и вылазят одни бока помогите кто сможет...
Вопрос № 112.703
Уважаемые эксперты, есть Вопрос!
Платформа 7.7. Есть ли возможность посредством УРИБ: 1) Производить обмен данными в то время, как пользователи работают в 1С 2) Программно управлять обменом (запускать, задавать параметры и т.д.) 3) Программно получить доступ к сведениям о том, изменен документ/справочник или не изменен и управлять этими сведениями (устанавливать/снимать флаг изменения). Это нужно для того, чтобы использовать встроенный механизм слежения УРИБ, а саму выгрузку/загрузку делать
своими средствами
Отвечает: Владимир Лазурко [Vladal]
Здравствуйте, Сергей Максименко [Elric]!
1. Судя по описанию (ссылка 1), используется файл переноса данных, который также включает изменения центральной конфигурации и обновляет конфигурацию периферийной базы. Также при установленной компоненте УРИБ доступ к выгрузке и загрузке врзможен только в режиме Кофигуратора. Следовательно, обмен данным нельзя производить во время работы пользователей.
2 и 3. В статье (1) в разделе "Регистрация изменений" написано "Регистрация изменений объектов производится автоматически при любом изменении объекта, независимо от того каким способом это изменение производилось (интерактивно или из встроенного языка)". Следовательно, есть пограммный способ.
Программно управлять не пробовал, нет сведений. Во второй ссылке в Приложении статья, а в статье ссылка на программу автообмена от romix'а (ссылка 3)
3. Если Вы имеете ввиду изменение справочника во время автообмена, думаю, понадобится обработка, делающая "слепок" справочника до обмена, например, во внешний файл, потом сравнивающая "слепок" с обновленным справочником.
О регистрации изменений объектов написано в статье (1), раздел "Регистрация изменений". "Выгружаются не изменения объектов, а сами измененные объекты. То есть, если в документе изменилось значение одного реквизита, то будет передаваться весь документ и он будет полностью перезаписан на той ИБ, в которую переносится" (в той же статье раздел "Выгрузка и загрузка изменений").
Владимир.
Приложение:
Ответ отправил: Владимир Лазурко [Vladal] (статус: 9-ый класс)
Ответ отправлен: 07.12.2007, 06:53 Оценка за ответ: 5 Комментарий оценки: Спасибо! Отдельное спасибо за полезные ссылки. Только вот сайт http://x-romix.narod.ru/ "временно закрыт". Можете мне письмом скинуть эту программу автообмена?
Отвечает: Vizli
Здравствуйте, Сергей Максименко [Elric]!
поправлю предыдущий ответ -
1. Производить обмен данными в то время, как пользователи работают в 1С МОЖНО, но при некоторых условиях:
- 1С предприятие, где производится обмен, НЕ должно быть запущено в монопольном режиме
- на центральной базе НЕ должно быть изменений в режиме конфигуратора.
Другими словами, как это описано в справке по УРИБ:
Режимы управления распределенной И Б и автообмена не следует запускать параллельно с работающей в монопольном режиме системой 1C:Предприятие, так как при попытке вызвать диалог управления распределенными данными будет выдаваться сообщение об ошибке, связанной с блокировкой данных. Если 1C:Предприятие работает в разделенном режиме (в многопользовательских версиях), то существует возможность выполнения выгрузки и загрузки изменений. При обращении к режимам управления распределенной ИБ и автообмена будет выдаваться
предупреждение об ограниченности выполняемых функций. Разумеется, загрузка изменений в разделенном режиме невозможна, если загружаемые изменения включают измененную конфигурацию.
2. Программно управлять обменом (запускать, задавать параметры и т.д.) удобнее всего в ПАКЕТНОМ режиме
Ответ отправил: Vizli (статус: 6-ой класс)
Ответ отправлен: 07.12.2007, 14:54 Оценка за ответ: 5 Комментарий оценки: Спасибо за ценное дополнение! А можно в мини-форуме подробнее про пакетный режим для УРИБ?
Вопрос № 112.705
Хорошего настроения, уважаемые эксперты!
Вопрос по платформе 7.7.
Хочу написать "инсталляцию", которая вносила бы изменения в модули Конфигурации. Речь идет не о взломе, разумеется, а об автоматизации некоторых процессов. Я знаю, что фирма ПиБи в свое время использовала такой прием для своей разработки МОД (Менеджер обмена данными), мне нужно нечто подобное.
Есть у кого информация о конкретных инструментах, шагах, методах?
Отвечает: ВладИС
Здравствуйте, Сергей Максименко [Elric]!
Есть утилита gcomp http://1c.alterplast.ru/, которая позволяет "разобрать" конфигурацию на набор текстовых файлов.
Потом внести в текстовые файлы нужные изменения. Можно одной из многочисленных diff утилит. На сайте gcomp есть ссылка на kdiff, например.
И в конце собрать конфигурацию обратно с помощью gcomp.
Ответ отправил: ВладИС (статус: 6-ой класс)
Ответ отправлен: 07.12.2007, 08:19 Оценка за ответ: 5 Комментарий оценки: Спасибо за ценный инструмент!
Отвечает: Астафьев Александр Николаевич
Здравствуйте, Сергей Максименко [Elric]! Посмотри здесь
http://www.1cpp.ru/index.php/Main
Ответ отправил: Астафьев Александр Николаевич (статус: 8-ой класс)
Ответ отправлен: 07.12.2007, 08:21 Оценка за ответ: 5 Комментарий оценки: Спасибо за полехную информацию!
Отвечает: svsrus
Здравствуйте, Сергей Максименко [Elric]!
В принципе, можно все. Пойти можно одним из уже указанных вам путей(gcomp, 1c++), а можно уже воспользоваться готовой программой Inserter от Альфа (http://www.dorex.ru/?projects&inserter). Ее основная задача - автоматизация вносимых изменений, а самое главное есть исходники под Delphi 7 и вы сможете изменить ее под свои нужды. Удачи!
Ответ отправил: svsrus (статус: 7-ой класс)
Ответ отправлен: 08.12.2007, 08:17 Оценка за ответ: 5 Комментарий оценки: Спасибо большое! Готовый инструмент -- это отлично!
Вопрос № 112.796
Влпрос по работе с web-приложением:
v8Grid: как получить значение из текущей строки?
имеется v8grid с данными из справочника Контрагенты. При смене строки вызывается событие SelectedIndexChanged(). Необходимо получить код контрагента из текущей строки.
Отвечает: nimoid
Здравствуйте, Акинфиева Ирина Андреевна!
КодКонтрагента = ЭлементыФормы.Grid.ТекущиеДанные.Контрагент.Код;
--------- Пишем баги на любые патчи :-]
Ответ отправил: nimoid (статус: 10-ый класс)
Ответ отправлен: 07.12.2007, 14:44
Вопрос № 112.828
Вопрос по версии 7.7 конф. Производство+Услуги+Бухгалтерия. Для выполнения свертки базы необходимо собрать остатки по регистрам.Хочу уточнить Остатки собираются по всем измерениям в регистрах остатков. В регистрах оборотов итоги не считаются? Хочу для этого написать обработку. может подскажете какими методами лучше пользоваться? Готовый текст необязательно.
Отвечает: Астафьев Александр Николаевич
Здравствуйте, Оксана/kasy! Оборотный регистр потому и называется оборотным что содержит только обороты нет там итогов соответственно.
Ответ отправил: Астафьев Александр Николаевич (статус: 8-ой класс)
Ответ отправлен: 07.12.2007, 18:54 Оценка за ответ: 4 Комментарий оценки: В принципе я так и предполагала.
Отвечает: Владимир Лазурко [Vladal]
Здравствуйте, Оксана/kasy!
В регистрах оборотов остатков нет, обычно их не переносят. Остатки хранятся на регистрах, тип которых указан как "Остатки", например, ПартииТоваров, ОстаткиТоваров, ВзиморасчетыПоставщиков и т.д.
Посмотреть остатки товара в разрезе любых заданных измерений (например, склада/фирмы) можно использовав методы Остаток или СводныйОстаток:
Но если Вы хотите получить остатки сразу по всем товарам, лучше используйте запрос (в Приложении). В качестве параметра используется таблица значений, в которую выгружают результат запроса и далле работают с этой таблица (отбор, сортировка, выгрузка в файл и т.д.)
Успехов!
С уважением, Владимир.
Приложение:
Ответ отправил: Владимир Лазурко [Vladal] (статус: 9-ый класс)
Ответ отправлен: 11.12.2007, 07:17 Оценка за ответ: 5 Комментарий оценки: Спасибо за подробный ответ
Вопрос № 112.836
Уважаимые эксперты, прошу помоч разобратся, написал модуль для инвенторизации и вылазят одни бока помогите кто сможет
Отвечает: Астафьев Александр Николаевич
Здравствуйте, Козинский Тарас! То что выделали через ВыполнитьЗапрос у Вас все работает (я проверил как догадался), сделайте все через ВыполнитьЗапрос должно заработать. Только в следующий раз пишите пожалуйста понятнее и подробнее что такое "... вылазят одни бока ..."
Приложение:
Ответ отправил: Астафьев Александр Николаевич (статус: 8-ой класс)
Ответ отправлен: 07.12.2007, 20:01 Оценка за ответ: 5 Комментарий оценки: Да Вы правы, сгоряча задал вопрос непонимая его.
Отвечает: Сергей Максименко [Elric]
Здравствуйте, Козинский Тарас!
1. Когда Вы применяете метод ПериодМ(), у Вас расчитываются временные итоги с начала по конец месяца, а в ВыполнитьЗапрос() у Вас указана конкретная дата. Учитывая, что Вы собираете данные на начало периода, итоги рассчитанные этими двумя методами будут совпадать только если в качестве расчетной даты взято начало месяца, иначе будет каша.
2. Рекомендация на будущее по оптимизации алгоритма.
У Вас есть такой участок кода: Если ГруппаНМА.Выбран() = 1 Тогда
ИтОстаток.ИспользоватьСубконто(ВидыСубконто.НеоборотныеАктивы,ГруппаНМА,1);
Иначе
ИтОстаток.ИспользоватьСубконто(ВидыСубконто.НеоборотныеАктивы,,1);
КонецЕсли;
В данном случае нет необходимости проверять, выбрана ли ГруппаНМА. Если она не выбрана, то в выборку и так включатся все значения. Т.е. вместо всего участка достаточно оставить просто строку: ИтОстаток.ИспользоватьСубконто(ВидыСубконто.НеоборотныеАктивы,ГруппаНМА,1);
3. Последуйте совету от Астафьев Александр Николаевич: везде, где обращались к итогам напрямую (метод ПериодМ()), используйте режим запроса (метод ВыполнитьЗапрос()). В этом режиме также можно позиционироваться на конкретные значения субконто, на перебирая их (см. в Синтакс-Помощнике второй параметр метода ПолучитьСубконто()).
--------- В творчестве рождается истина
Ответ отправил: Сергей Максименко [Elric] (статус: Профессионал) Украина, Киев Тел.: (044) 22-88-369 Организация: "МАКСЕР" - продажа и внедрение "1С:Предприятие" Адрес: г. Киев WWW:"1С:Предприятие" - продажа, внедрение, сопровождение ---- Ответ отправлен: 08.12.2007, 11:09 Оценка за ответ: 5 Комментарий оценки: Благодарю за совет!