Есть такой человечек igmig65. Он старожил у нас и на уаклабе тоже (лично я с ним там познакомился). Сразу хочу сказать, что он не хотел подобную тему создавать, поэтому я создал сам.
Так вот, у него сейчас большая беда: жена в больнице в тяжелом состоянии. Нужны деньги!!!
Работу он ищет везде, где можно, но работы не так много, чтобы покрыть расходы на лечение .
Мы с ним поговорили и он создаст 2 ветки о поиске работы: одну в разделе для работы, одну в штабе. В штабе - это я предложил, может кто из наших что-то нормальное подкинет. Человек плотно работает с 7.7: бухгалтерия и зарплтата. С торговлей работал не много, но саму платформу знает хорошо, поэтому, если что, я думаю, разберётся. Поэтому просьба к вам: если есть какая-то работа по 77 - пишите ему. Ну это, что касается работы. И как я говорил, он сам ещё про это напишет.
Ну и собственно, я эту тему создал, чтоб помочь нашему товарищу копеечкой! Поэтому кто сколько может - пожалуйста...
Номер карты в Приватбанке: 4627081791544955 ФИО: Митрошин Игорь Геннадьевич.
Реквизиты вэб-мани: z425515836212 u460829333033
Его координаты: тел. (095) 551-08-93 (мтс) мыло: igmig65@rambler.ru ну и ЛС у нас на форуме
При отправке - можете писать ему в ЛС, на мыло или в этой теме.
П.С. сам уже отправил пару тройку гривен, надеюсь остальные последуют моему примеру.
Информационно-поисковая система «Инфодиск: Законодательство Украины» разработана как мощный инструмент для ежедневной работы с правовой базой и поиска нужного нормативного акта в считанные секунды. Содержит законодательную базу Украины - более 120 000 документов: все Кодексы, законы, документы практически всех органов законодательной и исполнительной власти, международные договора и соглашения в действующих редакциях. Для удобства пользователей База законодательства систематизирована по трем классификаторам: по издающему органу, по типу документа, по тематической и отраслевой принадлежности документов. Выделены блоки: Новости законодательства, государственные классификаторы, типовые договора и бланки, справочники.
Полная правовая база данных «Инфодиск» содержит:
* общее законодательство: представлена законодательная база Украины - 120.000 документов практически всех органов законодательной и исполнительной власти, как в действующих, так и в предыдущих (с 2000 года) редакциях * все Кодексы и законы Украины в контрольном состоянии, нормативные акты СССР, УССР и стран СНГ, международные соглашения * типовые договора, формы бухгалтерской отчетности, бланки * справочники – от курсов валют до словаря юридических терминов, справочник органов власти и государственные классификаторы и т.п
Только лучшие правовые системы, и наша в частности, в своем арсенале имеют:
* Гипертекст: каждый документ содержит гипертекстовые ссылки, которые позволяют быстро отследить взаимосвязи между документами
Мощный поисковый аппарат:
* мгновенный поиск документа по любому из реквизитов или их сочетанию: по названию или словам из названия, по номеру документа, типу, дате, издателю * поиск по тематическим классификаторам; контекстный поиск по всей базе
Развитые сервисные возможности:
* вывод структуры нормативного акта * все логические операции со списками * сортировка списка по любому из реквизитов * экспорт документа или его части в Word, печать и т.п
Ведение собственных баз данных:
* возможность создавать и поддерживать свои базы данных * вводить собственные рубрикаторы подшивок документов * вести тематические подборки и комментарии
В системе для ведения собственных баз используется механизм «drag and drop», – вы можете просто «перетащить» нужный документ или список в ветку вашего классификатора без создания нового файла.
Язык интерфейса: русский, украинский Размер: 602.28MB
Хочется поздравить всех женщин с 8 марта и пожелать им всего наилучшего!!!
Отдельно, хочется поздравить нашу даму 5_kopeek и пожелать всего наилучшего ещё раз!!! Так же нашей командой было принято решение наградить 5_kopeek медалью - за заслуги на нашем форуме и, так сказать, подарок к 8 марта! Ура!
При наличии на управляемой форме отображения дерева, в котором флажок располагается рядом с текстом строки (т.н. "дерево с флажками") удобно использовать флажок родительской строки для управления состоянием флажков строк-потомков. Для получение максимальной информативности отображения предпочтительно использовать флажок с тремя состояниями: третье ("серое") состояние в этом случае означает, что флажки строк-потомков у данной строки установлены частично.
Прилагаемая внешняя обработка ДеревоСФлажками.epf содержит в модуле формы код управления флажком с тремя состояниями. Реализована наиболее "естественная" логика управления флажками:
- если устанавливается флажок родительской строки, то устанавливаются флажки всех строк - потомков этой строки;
- если сбрасывается флажок родительской строки, то сбрасываются флажки всех строк - потомков этой строки;
- если установлены флажки всех потомков строки, то устанавливается также флажок этой родительской строки;
- если сброшены флажки всех потомков строки, то сбрасывается также флажок этой родительской строки;
- если флажки строк-потомков установлены частично, то флажок родительской строки становится "серым".
Остается напомнить, что тип реквизита, отображаемого флажком с тремя состояниями - Число, и значения его таковы: 0 - флажок сброшен, 1 - флажок установлен, 2 - флажок "серый".
1С Предприятие 8.2. Обработчик проверки заполнения
У прикладных объектов на платформе 1С Предприятие 8.2 появился новый обработчик события ОбработкаПроверкиЗаполнения, где теперь рекомендуется делать все проверки на заполненность реквизитов объекта. Рассмотрим работу с этим обработчиком. Обработчик должен быть расположен в модуле объекта (для констант в модуле менеджера значений) и имеет следующий синтаксис:
Здесь параметр Отказ (тип Булево) отвечает за возможность дальнейшей работы программы после проверки заполнения, а в параметре ПроверяемыеРеквизиты(тип Массив) содержатся реквизиты объекта, которые система будет проверять на заполненность. Напомним, что в версии 1С Предприятие 8.2 появилось возможность на уровне свойств реквизитов объекта устанавливать свойство Проверка заполнения. Так вот в массив ПроверяемыеРеквизиты по умолчанию система помещает реквизиты с установленным свойством «Выдавать ошибку». Однако разработчик может сам некоторые реквизиты добавить в массив или удалить из него в зависимости от каких-либо условий:
Как видно из примера в качестве элементов массива выступают строковые наименование реквизитов, как они заданы в конфигураторе. Для того чтобы полностью отказаться от системной проверки, необходимо очистить массив. При этом разработчик может проводить проверку реквизитов по произвольным алгоритмам, система же проверяет только на заполненность/незаполненность:
Сообщение.Текст = "Нельзя указывать контрагента, помеченного на удаление!";
Сообщение.Поле = "Контрагент";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедур
Далее рассмотрим, когда вызывается данный обработчик. Это зависит от типа объекта и его свойств. Так для, например, для справочника обработчик вызывается перед записью объекта; для документа: если разрешено проведение - при проведении, иначе при записи; для обработки : при вызове стандартных команд "OK", Да". Подробно это описано во встроенной справке. Но также есть возможность вызвать данный обработчик в произвольный момент, используя метод объекта ПроверитьЗаполнение(). Например, определить команду Проверить в форме документа:
В данной статье рассматривается технология реализации подбора на платформе 1С 8.2. Статья не претендует на истину в последней инстанции, просто столкнувшись с рядом проблем и не нашедшим «правильной» методологии решения (возможно плохо искал), решил пройти этот путь самостоятельно, естественно пользуясь различными источниками. В основном я опираюсь на материалы мастер-групп Базового курса «Профессиональное программирование в 1С» Евгения Гилева и Насипова Фарита, участником которого я являюсь, а также соответствующей литературы (М.Г. Радченко, Е.Ю. Хрусталева Практическое пособие разработчика).
Итак, предметная область: компания занимается оптовой торговлей товарами имеющими срок годности, который относится к серии, а та в свою очередь принадлежит конкретному товару. Товары поступают на разные склады. Задача: реализовать удобное заполнение табличной части расходного документа. Решение: необходимо реализовать форму подбора, обеспечивающею просмотр остатков товара по срокам годности, возможность выбора соответствующих позиций и последующий перенос в табличную часть документа. Задачи такого плана встречаются в 5 части сборника задач к подготовке экзамена по Специалисту.
Реализация. Создаем форму произвольного типа для документа Продажа товаров. Можно конечно создать общую форму, но в данной ситуации выбираем то, что поближе. На форме создаем реквизиты:
Склад - тип СправочникиСсылка.Склады
Товары - Динамический список, в свойствах ставим галочку произвольный запрос.
ВыбранныеТовары - таблица значений (колонки Товар, Серия - тип ссылки на соответствующие справочники, срок годности, количество - дата, число).
Настраиваем запрос для реквизита Товары. Здесь по идее все просто с помощью конструктора берем два справочника и виртуальную таблицу Остатков регистра Остатки товара. Если нужно видеть весь товар, то используем левое соединение Товаров с остальными источниками, если только с остатками, то полное соединение с регистром:
ВЫБРАТЬ Товары.Ссылка КАК Товар, Серии.Ссылка КАК Серия, Серии.СрокГодности КАК СрокГодности, ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК Количество ИЗ Справочник.Товары КАК Товары ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Серии КАК Серии ПО (Серии.Владелец.Ссылка = Товары.Ссылка) ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки(, Склад = &Склад) КАК ТоварыНаСкладеОстатки ПО (ТоварыНаСкладеОстатки.Товар = Товары.Ссылка) УПОРЯДОЧИТЬ ПО Товар, СрокГодности
Для виртуальной таблицы в параметрах указываем отбор по складу. После этого я 3 часа топтался на одном месте. Когда я запустил данную форму в процессе отладки, то я увидел только одну строчку с товаром, хотя их должно было быть больше. Честно говоря и растерялся, так как по идее все должно быть просто но ... И вот около 3 часов я пытался понять почему не выводятся все записи. Конечно, может это и не является серьезной проблемой и большинство практикующих специалистов 1С про нее знают, но только после долгого серфинга по Интернету я нашел, что надо очистить свойство основная таблица в окне настройки запроса динамического списка, и тогда появились все записи. При этом становится неактивным свойство динамическое считывание данных.
В книге «Разработка управляемого интерфейса» мне не удалось найти описание этой ситуации. Сразу хочу отметить, что в типовой конфигурации управление небольшой фирмой используется не динамический список, а дерево значений.
И так, возвращаемся в нормальное русло решение задачи.
В разработанной форме я добавил параметр Склад с целью отбора остатков.
Для того чтобы открыть созданную форму подбора, в управляемой форме документы Продажа товара создаем команду подбор, размещаем на форме и генерируем обработчик, в котором нам необходимо открыть форму. Так как форма должна обеспечивать множественный выбор и отбор по складу, то создаем структуру параметров формы. И открываем форму соответствующей командой.
Соответственно в форме подбора при создании заполняем параметр запроса склад из параметров формы:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Товары.Параметры.УстановитьЗначениеПараметра("Склад",Параметры.Склад); Склад = Параметры.Склад; КонецПроцедуры
Теперь необходимо реализовать функционал формы подбора. При выборе соответствующей строки она должна переносится в таблицу значений, так же должен работать механизм перетаскивания. Для решения первой задачи необходимо создать обработчик события Выбор нашего динамического списка.
&НаКлиенте Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Для каждого НомерСтроки Из ВыбраннаяСтрока Цикл ТекСтрока = Элемент.ДанныеСтроки(НомерСтроки); Поиск = Новый Структура("Товар, Серия",ТекСтрока.Товар,ТекСтрока.Серия); МассивСтрок = ВыбранныеТовары.НайтиСтроки(Поиск); Если МассивСтрок.Количество() = 0 Тогда Строка = ВыбранныеТовары.Добавить(); Строка.Товар = ТекСтрока.Товар; Строка.Серия = ТекСтрока.Серия; Строка.СрокГодности = ТекСтрока.СрокГодности; Строка.Количество = 1; ВвестиЧисло(Строка.Количество, "Введите количество"); Пока Строка.Количество > ТекСтрока.Количество Цикл ВвестиЧисло(Строка.Количество, "Введите верное количество!"); КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры
В нем имеется параметр ВыбраннаяСтрока представляющий собой массив, элементами которого являются номера строк списка Товары. В цикле проверяем не дублируются ли выбранные строки и запрашивается количество.
Для реализации перетаскивания необходимо проверить настройку следующих параметров: Для таблицы Товары - РазрешитьНачалоПеретаскивания, для Выбранные товары - РазрешитьПеретаскивание.
Так же необходимо создать обработчик события Перетаскивание для элемента формы ВыбранныеТовары.
&НаКлиенте Процедура ВыбранныеТоварыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле) Для каждого НомерСтроки Из ПараметрыПеретаскивания.Значение Цикл ТекСтрока = Элементы.Товары.ДанныеСтроки(НомерСтроки); Поиск = Новый Структура("Товар, Серия",ТекСтрока.Товар,ТекСтрока.Серия); МассивСтрок = ВыбранныеТовары.НайтиСтроки(Поиск); Если МассивСтрок.Количество() = 0 Тогда Строка = ВыбранныеТовары.Добавить(); Строка.Товар = ТекСтрока.Товар; Строка.Серия = ТекСтрока.Серия; Строка.СрокГодности = ТекСтрока.СрокГодности; Строка.Количество = 1; ВвестиЧисло(Строка.Количество, "Введите количество"); Пока Строка.Количество > ТекСтрока.Количество Цикл ВвестиЧисло(Строка.Количество, "Введите верное количество!"); КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры
Так как код обработчика похож на предыдущий, то для оптимизации можно создать процедуру и вызывать ее из обоих обработчиков.
На рисунке приведен внешний вид формы подбора:
[attachment=293:FormPodbora.png]
Для завершения подбора создана команда формы, с обработчиком, выполняющим оповещение о выборе:
Соответственно, в форме документа реализован обработчик события ОбработкаВыбора:
&НаКлиенте Процедура ТоварыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Если ВыбранноеЗначение.Количество() > 0 И Объект.Товары.Количество() > 0 Тогда Режим = РежимДиалогаВопрос.ДаНет; Текст = "Очистить табличную часть?"; Ответ = Вопрос(Текст, Режим, 0); Если Ответ = КодВозвратаДиалога.Да Тогда Объект.Товары.Очистить(); КонецЕсли; КонецЕсли; Для каждого Подбор Из ВыбранноеЗначение Цикл Строка = Объект.Товары.Добавить(); Строка.Товар = Подбор.Товар; Строка.Серия = Подбор.Серия; Строка.Количество = Подбор.Количество; КонецЦикла;
В целом хочется еще раз подчеркнуть, что целью данной статьи не является проповедование истины, а просто поделится полученной информацией и опытом. Буду благодарен за конструктивные советы и рекомендации, так как тема управляемых форм достаточно новая, но похоже надолго, и ряд вопросов (особенности работы с произвольными запросами) требует дополнительной информации.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!