Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )



История благодарностей участнику Sharzem ::: Спасибо сказали: 98 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
02.06.16, 14:41 Выборка группы контрагенов в документ
inna.innainna84 @ Сегодня, 9:13 *,
Процедура ОбработкаПодбора(Эл,Кон)         
    Если Эл.Вид()="Контрагенты" Тогда
        Если Эл.ЭтоГруппа() = 1 Тогда
               лпКонтрагенты = СоздатьОбъект("Справочник.Контрагенты");
               лпКонтрагенты.ИспользоватьРодителя(Эл);
               лпКонтрагенты.ВыбратьЭлементы();
               Пока лпКонтрагенты.ПолучитьЭлемент() = 1 Цикл
                     Если ВыбРДМ1.Принадлежит(Эл.ТекущийЭлемент()) = 0 Тогда
                           ВыбРДМ1.ДобавитьЗначение(Эл.ТекущийЭлемент(), +"Группа "+Эл.ТекущийЭлемент().Наименование);
                      КонецЕсли;
               КонецЦикла;
         ИначеЕсли ВыбРДМ1.Принадлежит(Эл.ТекущийЭлемент()) = 1 Тогда
            Сообщить("уже присутствует в списке");
            ВыбРДМ1.ДобавитьЗначение(Эл.ТекущийЭлемент(), +"Группа "+Эл.ТекущийЭлемент().Наименование);
            Возврат;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры


Бред, бред, бред !

Выборка группы контрагентов в документ ? Че за новости такие ...?

Нет, не туда.
Опять те же грабли ! diablo.gif
Зачем список значений в документе ?!
Вам нужна отдельная Форма Обработки для подбора всей Вашей инфы в табличную часть документа.
Вы че творите ? faceoff.gif
inna.innainna84,
19.05.16, 7:07 прекращена работа программы 1c v7 starter program multi-user
inna.innainna84 @ Вчера, 15:22 *,

Начинаем заниматься удаленно телепатией.

Скорее всего, перед Вами стоит задача сформировать данные в формате json, в кодировке UTF-8 с последующей их отправкой в теле POST-запроса по адресу.

Вам это нужно или что-то иное ?
Никогда не вел обмен с тем сайтом, но думаю что именно так Вы будете ему кидать свои данные.

Угадал ?
inna.innainna84,
18.05.16, 12:36 прекращена работа программы 1c v7 starter program multi-user
А это "чудо" у Вас, это лично мое мнение, летать корректно не будет, даже если все исправите.
Аргументирую тем что используете объект "Addin.V7HttpReader" создающийся "глючной" v7plus.dll.
Лучше всего строить POST-запросы используя объект "WinHttp.WinHttpRequest.5.1".

По-поводу отлатки: Повставляйте в процедуры (их у Вас немного), что-то типа:
Процедура Название процедуры()
Сообщить ("Начато выполнение Название процедуры","i");
///Ваш код
Сообщить ("Выполнено Название процедуры","i");
КонецПроцедуры
inna.innainna84,
24.11.15, 11:47 Как не сохранять новый документ?
В модуле формы документа Вы сделали следующее:

Повешали на форму, например: Функцию ДоступностьРеквизитов()
Функция ДоступностьРеквизитов()
     Форма.кнЗаписать.Доступность(ВашРеквизит.Выбран());
     Форма.кнПровести.Доступность(ВашРеквизит.Выбран());
КонецФункции


Но забыли:

Процедура ПриЗаписи()
    Если ВашРеквизит.Выбран() = 1 Тогда
          Предупреждение("Отменено не заполднено поле: ВашеПоле")
          СтатусВозврата(0);
          Возврат;
     КонецЕсли;
КонецПроцедуры
Sede,
04.08.15, 11:44 Импорт данных из jbkl_rec.dbf в 1с
К сказанному выше TipsyKID.
На сайте Приватбанка тоже есть подобная обработка для 7.7.
alexvav,
20.07.15, 16:01 Показать таблицу в форму отрытой модально
Варриант 3: Использовать вместо Таблицы, Таблицу значений расположенную на модальной форме обработки.

Цитата(Sede @ 20.07.15, 10:54) *
Обработка должна быть открыта модально, поскольку ожидается возврат результата.


Под результатом имеется ввиду Расшифровка ?

ЗЫ: Просто интересно где можно применить модально открытую форму которая сформирует таблицу и еще при этом что-то вернет туда откуда ее вызвали ?

Опытом поделитесь че Вы там такое делаете, что и впрям такая открытая форма уж очень так нужна ? Если честно, я такого еще нигде не встречал. Подход может заслуживать на звание "Ноу-хау".
Sede,
16.07.15, 17:12 Как программно передать реквизиты в шапку ПН?
Замечание 1:
Никакой Вам там транзакции не нужно. Сделайте вот так:
Для СтрокаДанных=НачалоДанных По ПоследниеДанные Цикл
    //*** тут достаю название товаров, количестов, штуки и т.д.
    докПриходная.НоваяСтрока();
    //*** тут заполняю таблицу полученными данными
    //!!!Зачем в цыкле запись???       докПриходная.Записать();
КонецЦикла;
//Добавте проверку на количество строк
Если докПриходная.КоличествоСтрок() > 0 Тогда
    докПриходная.Записать();
    ОткрытьФорму(докПриходная.ТекущийДокумент());
КонецЕсли;


По поводу Вашего вопроса, смотрю на скрин и вижу что курсор у Вас там не синего цвета, а зеленого - соответственно Вы пользуетесь Formex. Поэтому для вызова любой процедуры доукмента можете прописать:
СписЗнач = СоздатьОбъект("СписокЗначений");
Результат = Сервис.ВыполнитьПроцедуру(докПриходная.ТекущийДокумент(), "ПриОткрытии",СписЗнач);
Если Результат = 0 Тогда
       Сообщить ("Написано граблями");
КонецЕсли;


ВыполнитьПроцедуру(<?>,,)
Синтаксис:
ВыполнитьПроцедуру(<Контекст>,<ИмяПроцедуры>,<СписокАргументов>)
Назначение:
Метод предназначен для выполнения процедуры в заданном контексте.
Возвращает 1 в случае успеха, 0 - в противном случае.
ПРИМЕР:
Перем Конт;
Сервис = СоздатьОбъект("Сервис");
ОткрытьФорму(Обработка.Демо, Конт);
Список = СоздатьОбъект("СписокЗначений");
Список.ДобавитьЗначение("Первый параметр");
Список.ДобавитьЗначение("Второй параметр");
Список.ДобавитьЗначение("Третий параметр");
Сервис.ВыполнитьПроцедуру(Конт, "Выполнить2


Но, Вы сами подумайте, зачем выполнять предопределенную процедуру ПриОткрытии(), если она в любом случае сработает и выполнит то что там написано ?
Sede,
15.07.15, 11:01 Посоветуйте конфигурацию для оптовой торговли лекарствами
Цитата(vadim007 @ 14.07.15, 11:51) *
Здравствуйте!
Посоветуйте конфигурацию для оптовой торговли (оптовый склад) лекарственными средствами.


Система АНР-Аптека, нормальная конфигурация. Расчитана для розничных аптек, но поверьте что опт намного проще розницы. Со стороны ценообразования - масса варриантов, масса льгот, скидок, условий, настраивается все так как фантазия позволяет. Есть обмен между удаленными филиалами синхронизация справочников, документов, время и тд. тоже настраивается все. Единственное что возможно нужно будет доработать - это прием заказов клиентов и формирование электронных накладных и прайсов в нужных форматах (по сравнению с имеющимся там функционалом - это мелочь), можете сами не писать, Ваши деньги - их выполнение. Решения есть и на 7.7. и на 8.2. Загуглите, в инете есть их сайт и контакты, пообщаетесь примете соответственное для себя решение.
vadim007,
13.07.15, 16:26 Сохранение/Восстановление документов в режиме Предприятие 7.7.
Универсальная обработка для сохранения/восстановления документов.
Желательно (кому религия не позволяет, то не обязательно) наличие ВК Formex, которую можете взять отсюда: FormEx версия 2.0.5.91

В отличии от других универсальных решений Вы сами можете выбирать (отмечать) документы которые необходимо сохранить/восстановить, а также просмотреть что именно в них изменилось (функция просмотра сыровата, но все же имеется).

Сама процедура восстановления возвращает документ полностью в то первичное состояние в котором его сохранили (полностью замещает все реквизиты существующего в т.ч. и признаки проведения, пометки удаления). Поэтому дабы мой ник не вспоминали "хорошим" словом технические специалисты в строке 680 установлено ограничение для обычных пользователей, которые могут ею воспользоваться для просмотра измененных реквизитов.

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

Для чего она нужна ? Довольно часто приходится вносить изменения в существующие документы, во время работы большой фирмы и корректировка может занимать длительное время. Поэтому я делаю копию, там работаю, а потом все измененные документы восстанавливаю в рабочей базе. Даже если и в рабочей базе грядут "перемены", мы сохраняем, а потом если что восстанавливаем обратно.

Пароль на архив, как обычно в Правилах.
Gleef, valanter2000, Vofka,
09.06.15, 13:57 Создание связи товаров в справочнике
Вот идеальный ответ:
Цитата(Vofka @ 09.06.15, 11:27) *
Кстати, можно сделать подчиненный справочник.


Весь справочник подчиненный владельцу - это сопутствующие товары, владелец - основные.
Результат: выбрали телефон Нокия:
1. Если нужно показать основные - показали всех владельцев где в подчиненных нашли телефон Нокия;
2. Если нужно сопутствующие - показали все товары которые есть в подчиненном справочнике.

Лучше наверное и не придумать.

Цитата(Vofka @ 09.06.15, 11:27) *
А в 7.7 в справочниках табличные части же есть?


Нету табличной части в 7.7., но она заменяется Таблицей значений, которую легко можно заполнить ПриОткрытии + кнопочка "Добавить" и создается новый справочник в отдельной форме, после записи которого в Таблицу значений добавляем еще 1 строку.

Я бы именно так и реализовывал. Пользователю все понятно, программисту минимум работы.

Цитата(awp @ 09.06.15, 12:34) *
Делайте так как описано
Добавить отдельный справочник "Соответствия" из двух реквизитов: Основной товар, Соответствующий товар.

Форму выбора или подбора новую создавайте для отображения сопутствующих. Обязательно галочку Отбор по реквизиту для "Основной товар"

Далее просто отбор по реквизиту в справочнике.....

Заполнять такой справочник будет уж очень сложно. Представьте если 1 товар будет сопутствующим для так порядка 120 основных и основным для еще 120. Как пользователю разобраться в этой куче хлама ? Неудобно !!!
Можно и так, но нужно приложить максимально усилий что-б такое реализовать, и оно было нормально восприимчимым.
Sede,
08.06.15, 11:49 Поиск в пустом подчиненном справочнике
Цитата(Sede @ 08.06.15, 10:42) *
В справочнике 1 уровень так что с группами заморачиваться не пришлось...и слаба Богу, хватит с одного головной болью разобрался rulez.gif


А я так не думаю, что разобрались уж-таки до конца ))).
Для отбора единичного количества элементов, варриант предложенный TipsyKID вполне решает задачу.

Смотря что Вы собираетесь делать. Решение в нужном направлении, но: в функции используются такие операторы как СоздатьОбъект, ВыбратьЭлементыПоРеквизиту, Пока ... Цикл.
В зависимости от количества обращений к функции у Вас очень уж сильно возрастет время выполнения задачи. Например, нужно загрузить прайс-лист, с немеряным количеством Элементов, в следствии будете смотреть в экран минутами.

Вопрос: Почему Вы не можете даже тем самым запросом отобрать подчиненый справочник по условию Контрагент = Контрагент, выгрузить запрос в Таблицу значений и по мере необходимости доставать оттуда методом НайтиЗначение в колонке "код" подчиненный справочник ? В результате Вы получите возрастание производительности (на большом количестве обращений) раз в 10-15 (в зависимости от формата базы)! Подумайте, возможно еще не поздно изменить подход и на этапе разработки переделать.
Sede,
01.05.15, 9:14 Ошибка в цикле
Цитата(Домовик @ 01.05.15, 9:30) *
а как "обнулить" переменную типа Документ. , не слетая с типа? и не используя в цикле СоздатьОбъект ?
у меня в комментариях кода указано еще ПолучитьПустоеЗначение(). оказывается "обнуляет", но потом перепозиционировать не дает...

разве что признак нахождения существующего документа писать в другую, числову, переменную.


Точнее выразиться произошло не "обнуление", а изменение типа переменной. Достаточно простого перепозиционирования с одного дока на другой, т.е. если нашли работаем с тем что нашли, нет - создаем новый не изменяя тип переменной. А так вышло что изменился агрегатный тип на "Строку" и дальше использование НайтиДокумент() или Новый() не представляет возможности.
В том куске кода, который Вы применили действительно нужна еще одна переменная для установки признака (число, строка, булево - без разницы), но как Вы видели в предыдущем моем посте (хотя там применена совершенно другая конструкция) без нее можно вполне обойтись, нужно только сократить количество применений Цикл. Можно еще использовать Метка и Перейти, хоть и считается что такой подход "не для проффесионалов", но и его можно было применить в той конструкции которую предоставил автор темы.

А в принцыпе, поднятый salton вопрос, не особо заслуживает внимания, скорее больше критики. "На коленке" написали, пусть нам он простит, ответы дали по существу, а дальше пускай выбирает варриант и работает над исправлением синтаксических ошибок.

ЗЫ, Автор, если будете читать еще тему, то в Процедуре ЗаполнимДокументыИзТаб после строки:
лпДокОтчет.АвтоВремяТекущее();

нужно еще одну добавить:
лпДокОтчет.Записать();
Домовик,
30.04.15, 22:16 Ошибка в цикле
Короче, забейте на все то что написано выше. Вот оптимальный код, в процедуру ЗаполнимДокументыИзТаб(прТаб,прНачДата, прКонДата) передайте нужные параметры, подкорректируйте процедуры в плане заполнения документа, и с Вас пиво icon_beer17.gif
Процедура ОбработаемТабличнуюЧасть(прТаблЧастьДока,прТаблЗнач,прКолОтбора,прМенеджер);
    Для лпНомОтбора = 1 По прКолОтбора Цикл//Проходим цикл не по всей прТаблЗнач, а только по количеству в прКолОтбора
        лпСтрТаб = "";
        прТаблЗнач.НайтиЗначение(прМенеджер,лпСтрТаб,"Менеджер");
        прТаблЗнач.ПолучитьСтрокуПоНомеру(лпСтрТаб);
        лпИдентификатор = прТаблЗнач.Идентификатор;//Здесь нужно привести к нужному типу - "Строка" или "Число" так как в ТЧ документа
        Если прТаблЧастьДока.НайтиЗначение(лпИдентификатор,,"Идентификатор") = 0 Тогда//Не нашли
            прТаблЧастьДока.НоваяСтрока();
            //Здесь заполняете прТаблЧастьДока так как в документе по идентификаторам метаданных
        КонецЕсли;
        прТаблЗнач.УдалитьСтроку();//Обязательно, что-б не попадать на 1-о и то же значение
    КонецЦикла;
КонецПроцедуры//ОбработаемТабличнуюЧасть

//======================================================================
Процедура ЗаполнимДокументыИзТаб(прТаб,прНачДата, прКонДата)//прТаб - это Ваша таб, прНачДата, прКонДата - даты выборки документов
    Если ТипЗначенияСтр(прТаб) <> "ТаблицаЗначений" Тогда
        Предупреждение("Это не таблица значений!",5);
        Возврат;
    ИначеЕсли прТаб.КоличествоСтрок() = 0 Тогда
        Предупреждение("Пустая таблица значений!",5);
        Возврат;
    КонецЕсли;
    
    лпНоваяТаб = СоздатьОбъект("ТаблицаЗначений");//Копия Таб
    прТаб.Выгрузить(лпНоваяТаб)
    
    //лпТаблЗначДоков (Таблица значений) - для документов которые есть в периоде, для того что-б не делать выбоку в цикле
    лпТаблЗначДоков = СоздатьОбъект("ТаблицаЗначений");
    лпТаблЗначДоков.НоваяКолонка("ДокОтчет","Документ.Отчет");
    лпТаблЗначДоков.НоваяКолонка("Менеджер","Справочник");
    //Выборка документов и заполнение лпТаблЗначДоков, где лпДокОтчет - агрегатный Объект для применения команд
    лпДокОтчет = СоздатьОбъект("Документ.Отчет");
    
    //лпТаблЧастьДока (Таблица значений) - для выгрузки табличной части, для того чтоб не бегать в цикле по строкам
    лпТаблЧастьДока = СоздатьОбъект("ТаблицаЗначений");
    
    лпДокОтчет.ВыбратьДокументы(прНачДата, прКонДата);
    Пока лпДокОтчет.ПолучитьДокумент() = 1 Цикл
        лпТаблЗначДоков.НоваяСтрока();
        лпТаблЗначДоков.ДокОтчет = лпДокОтчет.ТекущийДокумент();
        лпТаблЗначДоков.Менеджер = лпДокОтчет.Менеджер;
    КонецЦикла;
    //лпТаблОтбор (Таблица значений) - для отбора по менеджерам, для того что-б не перезаписывать (перепроводить) документы в цикле
    лпТаблОтбор = СоздатьОбъект("ТаблицаЗначений");
    лпНоваяТаб.Выгрузить(лпТаблОтбор);
    лпТаблОтбор.НоваяКолонка("Отбор","Число");
    лпТаблОтбор.Заполнить(1,,,"Отбор");
    лпТаблОтбор.Свернуть("Менеджер","Отбор");
    //Теперь выберем Менеджер и конкретно по нему заполним или создадим документы
    лпТаблОтбор.ВыбратьСтроки();
    НачатьТранзакцию();
    Пока лпТаблОтбор.ПолучитьСтроку() = 1 Цикл
        лпМенеджер = лпТаблОтбор.Менеджер;
        лпКолОтбора = лпТаблОтбор.Отбор;
        лпСтрТаблЗначДок = "";
        Если лпТаблЗначДоков.НайтиЗначение(лпМенеджер,лпСтрТаблЗначДок,"Менеджер") = 1 Тогда//Всегда на 1-го Менеджера только 1 документ
            лпТаблЗначДоков.ПолучитьСтрокуПоНомеру(лпСтрТаблЗначДок);
            лпДокОтчет.НайтиДокумент(лпТаблЗначДоков.ДокОтчет);
        Иначе//Документ не найден
            лпДокОтчет.Новый();
            лпДокОтчет.Менеджер = лпМенеджер;
            //Еще какие там необходимые реквизиты
            
            лпДокОтчет.УстановитьНовыйНомер();
            лпДокОтчет.АвтоВремяТекущее();//или еще какое-то
        КонецЕсли;
        лпДокОтчет.ВыгрузитьТабличнуюЧасть(лпТаблЧастьДока);
        ОбработаемТабличнуюЧасть(лпТаблЧастьДока,лпНоваяТаб,лпКолОтбора,лпМенеджер);
        лпКолСтрокДока = лпДокОтчет.КоличествоСтрок();
        лпКолСтрокТаблЧасть = лпТаблЧастьДока.КоличествоСтрок();
        Если лпКолСтрокДока < лпКолСтрокТаблЧасть Тогда//Добавлены новые строки
            лпДокОтчет.ЗагрузитьТабличнуюЧасть(лпТаблЧастьДока);
            Если (лпДокОтчет.Блокировка(1)=1) Тогда//Проверим не блокирован ли документ
                лпДокОтчет.Блокировка(0);
                лпДокОтчет.Провести();//Или Записать() не знаю
            Иначе
                Сообщить("Заблокирован "+лпДокОтчет.Представлениевида()+" № "+лпДокОтчет.НомерДок+" от "+лпДокОтчет.ДатаДок,"!");
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    ЗафиксироватьТранзакцию();
КонецПроцедуры //ЗаполнимДокументыИзТаб
salton, Домовик,
30.04.15, 20:16 Ошибка в цикле
Цитата(salton @ 30.04.15, 20:43) *
спасибо, сейчас проверю предложенный Вами варианты.

зы. Менеджер в Таб может повторяться несколько раз...


Теперь представьте вариант что "Менеджер" у Вас порядка 100 000 и информации по ним еще + по 10 шт. на каждого, итого 1 млн. строк в таб.

Смотрите глобальней, сделайте что-б в таб не попадала информация которая уже разнесена по документам.

Ваш подход и варриант реализации не совсем правильные, уж очень это все долго ! И еще, луше не перебирать сначала строки Таб, а потом документа, а сделать наоборот, перебрать Документы, потом строки Таб и только после этого произвести Запись или Проведение Документа, таким образом выиграете доп. время + еще нужно проверить существующие Документы на блокировку. (см. Блокировка(вклВыкл)). Впрочем удачи )

Цитата(Домовик @ 30.04.15, 20:56) *
Sharzem, вы имеете в виду скобки присваиваются? и типа тип значения теряется? да? точно? потеряется или обнулится?


Из синтаксис помощника:
Синтаксис:
НайтиДокумент(<Документ>)
Назначение:
Найти документ по значению.
Возвращает: 1 - если действие выполнено (документ найден);
0 - если действие не выполнено.
Параметры:
<Документ> - выражение со значением типа 'Документ'.
Замечание:
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.

Вот еще:

Новый()
Назначение:
Начать ввод нового документа.
Замечание:
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.

А вы что сделали ?
локОтчет=СоздатьОбъект("Документ.Отчет")
локОтчет="";

и далее применили
локОтчет.Новый()

и
локОтчет.НайтиДокумент(тмпОтчет.ТекущийДОкумент());


Извините, я не хотел Вас оскорбить, не вкоем случае.
Домовик,
01.07.14, 15:14 Разделение прав пользователям
Цитата(Домовик @ 30.06.14, 22:43) *
т.е есть выборка, и есть заполнение строк с по.
в 1С возможно имеет смысл если это таблицазначений на форме(а заполнение ее занимает время), то формировать список докуменотов весь, но заполнять только строа ки с по по требованию.


Оно !!! Поскольку, как правило, курсор установлен на документе имеющим определенную дату вышло что нужно:

лпКолСтрокНекаяТЗ = НекаяТЗ.КоличествоСтрок();
лпТекущаяСтрока = НекаяТЗ.ТекущаяСтрока();
лпДокументНач = НекаяТЗ.ПолучитьЗначение(?( лпТекСтрока-30> 1, лпТекСтрока-30, 1),"Документ");
лпДокументКон = НекаяТЗ.ПолучитьЗначение(?( лпТекСтрока+30< лпКолСтрокНекаяТЗ, лпТекСтрока+30, лпКолСтрокНекаяТЗ),"Документ");
лпДокумент = СоздатьОбъект("Документ."+ лпДокументНач.Вид());//Или если нравится  лпДокументКон.Вид(), это все равно документы одного вида
лпДокумент.ВыбратьДокументы( лпДокументНач.ДатаДок, лпДокументКон.ДатаДок);
Пока лпДокумент.ПолучитьДокумент = 1 Цикл

КонецЦикла;


Еще немного от себя, дабы не ганять это все через определенный кусок времени, с помощью Formex останавливаю выполнение Обработки ожидания:


Процедура ПриНажатииКнопкиКлавиатуры(прКодКлавиши, прAlt, прShift, прCtrl, прСимвол, прФСО)
    //Сообщить("Код клавиши: "+прКодКлавиши);
    Если прКодКлавиши = 27 Тогда
        гпНеЗакрывать = 1;
    ИначеЕсли прКодКлавиши = 46 Тогда
        ПриНажатииКнопки("кнУдалить");
    ИначеЕсли прКодКлавиши = 113 Тогда
        ПриНажатииКнопки("кнНовый");//кнопка insert действует до окончания процедуры заменено на F2
    КонецЕсли;
гпДвижение = _GetPerformanceCounter();//переменная куда задаю последнее время нажатия клавиш
КонецПроцедуры//ПриНажатииКнопкиКлавиатуры()
//======================================================================
Процедура ПриДвиженииМыши(прКонт, прСост, прОсьХ, ПрОсьУ)
    гпДвижение = _GetPerformanceCounter(); //та же самая переменная куда задаю последнее время движения мыши
КонецПроцедуры
//======================================================================
Процедура ПриДеактивацииОкна()
ВыполнитьОбработку();//Здесь вообще выключаю обработку ожидания
КонецПроцедуры // ПриДеактивацииОкна()
//======================================================================
Процедура ПриАктивацииОкна()
    ВыполнитьОбработку(); //Здесь Включаю выполнение обработки ожидания
КонецПроцедуры // ПриАктивацииОкна()

//======================================================================

Функция ЕстьВозможностьПропустить() //Функция которая определит что юзер курит
    лпСтатус = 0;
    лпДвижение = _GetPerformanceCounter();
    Если (лпДвижение-гпДвижение)/1000 > 150 Тогда
        лпСтатус = 1;
    КонецЕсли;
    Возврат лпСтатус;
КонецФункции // ЕстьВозможностьПропустить()

//======================================================================

Процедура ЗдесьПроцедураПоОбновлению()

Если ЕстьВозможностьПропустить() = 0 Тогда //А здесь если пользователь не курит, а работает - будем обновлять журнал-обработку
        //что-то там
        КонецЕсли;

КонецПроцедуры

//======================================================================

Процедура ВыполнитьОбработку() Экспорт
    Если гпСчСекЗапущен=0 Тогда
Форма.ОбработкаОжидания("ЗдесьПроцедураПоОбновлению",1);
        гпСчСекЗапущен=1;
    Иначе              
        Форма.ОбработкаОжидания("ЗдесьПроцедураПоОбновлению",0);
        гпСчСекЗапущен=0;
    КонецЕсли;
КонецПроцедуры//ВыполнитьОбработку


Итак, итог: С помощью идей Домовик удалось заменить 1 С-кий журнал документов на ОПТИМИЗИРОВАННУЮ 1 С-кую "Журнал-обработку" с кучей дополнительных прибабахов заменяющую его без изменения конфигурации (последняя не изменялась вообще).

Спасибо, Домовик, время потрачено не даром ):

Домовик,
19.02.14, 3:37 З приводу подій в Україні
Цитата(vadim007 @ 18.02.14, 11:52) *
Недалеко от них - люди в масках, с дубинками. Это мирные демонстранты?

Шановний, а Ви ще до сих пір не знаєте що це за люди ?

Знайомтесь: Хто ці люди і чого вони добиваються ?

)): Оооо, так це ж по-Вашому - бандеровці та нацисти !!!


Тоді, Мойша, о чем Вы говорите: "...Я считаю, что присутствие евреев на Майдане - это не просто освящение имени Творца - это диалог евреев с будущей властью. Это то, что позволит завтра евреям жить и работать в этой стране..." Витяг взято з Вашого посилання на http://censor.net.ua

Зрозумійте, як колега я поважаю Вашу професійну думку , але з Вашою позицією, як громадянин цієї держави з приводу заворушень в Києві погодитись не можу. Якось наведені Вами доводи не переконують, а тільки підтверджують необхідність вчинення певних дій. Яких саме, кожен вирішує сам.

В нас різні погляди, але я осуджую дії сьогоднішньої влади щодо власного народу. А Ви "нормальный человек", знайдіть час і виїдіть за межі облцентра та проїдьтесь селами, де із 120-180 чол. працездатного віку, працевлаштовані в свому селі 15-20, решта - на заробітках, де за останні 3 роки позакривано школи, а взимку заметені дороги чекають весни, просто поїдьте і подивіться на простих сільських людей...

Ви, мабуть із зарплатнею 3500-6000 грн., не знаєте як інші "виживають" з доходами 1200-1500 грн. на 2-3 чол. Я не можу погодитися з тим, що маючи 2 вищі освіти взагалі не можеш знайти роботи, оскільки без досвіду нікому не потрібен. Я не погоджуюся з тим, щоб скласти іспит, студент має "внести дань" (я не говорю про вступні, там взагалі нема про що вести мови), з тим що коли приходиш до лікарні, лікар спочатку чекає від Вас "подяки" і лише потім почне встановлювати діагноз, коли стоїте на тротуарі і Вас збиває "мажор", а потім суд встановлює, що Ви самі кинулися під колеса і Ви ще маєте сплатити вартість понівіченого авто та відшкодувати моральну шкоду, коли правоохоронці гвалтують наших жінок та сестер, а тепер на Майдані ще й вбивають наших братів...

Цитата
Вау, майдан решает проблему утилизации покрышек!


Майдан на сьогоднішній день не вирішує питання утилізації автошин. На майдані стоять герої, яких дістала влада в державі котра допустила ситуацію, коли все вирішується лише на рівні "відкатних". На майдані ті, кого найменше цікавить Вами оспівувана мама Росія чи такий вражий Євросоюз. На мадані ті, кого не влаштовує та ситуація, яку я Вам поверхнево описав, їм не потрібна влада олігархів, яка не працює, грабує і тримається за трони, ховаючись за спини 18-річних наших синів-призовників (яких вони там змусили стояти), за якими стоять бухі звірі-беркутівці разом з продажними 150-гривневими хлопчиками-"тітушками".

До речі, сьогодні в Тернопільській області правоохоронці, які дали присягу служити народу України, (за інформацією Майдану "5-канал") вже перейшли на бік народу - от Вам приклад і сьогоднішні події це ще не кінець, хвиля народного обурення піднімається з новою силою. Слава Україні !

Домовик,
25.12.13, 18:56 Улыбнуло
Если в расходную накладную забить дури и выкурить, то получится неплохой приходный документ. 44000000.gif
Ardi, Batchir, logist,
05.10.13, 12:04 Сохранение истории изменения документов
Цитата(Стрелок @ 26.09.13, 6:51) *
Есть готовое решение универсальное для любой конфы. изменения в программе минимальные. оно стоит денег т.к. моё и серийное (установлено уже у 7 клиентов)


Да, решение есть, можете посмотреть и воспользоваться, вот только БЕЗВОЗМЕЗДНО:

Кто накосячил в базе 1С (7.7) (Автор: andrey_k65)

mister-x,
01.10.13, 22:24 База штрих-кодов и наименований ТМЦ (для Украины)
При открытии новых торговых точек, часто возникают проблемы с созданием новых справочников ТМЦ (тем более если приходится заниматься разными сферами деятельности). Заведение наименования, штрих-кода - процес занимающий как человеческие ресурсы так и время.

Вылаживаю для всеобщего использования СВОЮ работающюю (99,9 %) на протяжении 2,5 года базу с штрих-кодами Бытовой химии. Компетентные люди найдут решение по использованию и внедрению.


Возможно, кто-то еще может БЕЗВОЗМЕЗДНО поделится своими базами ? Меня, например, интересуют продукты питания. Присоединяйтесь ! Если тема будет поддержана, выложу еще базу из сферы не менее актуальной.

Пароль на архив, как обычно.




An79, Ardi, asd.company, bob210250, Dimonyara, e.mahovik, ivan.brusniak, Ivanstorge, markus.ua, Pepe, rinon, valv, vasya1992, Vofka, zetovich, Ким220,
13.07.13, 18:41 Ошибка при загрузке справочника: Код не уникален
Мне кажется что собака порыла именно в этом куске:
 Если КодРодителя<>0 Тогда
     Если СпрРод.НайтиПоКоду(КодРодителя,0)=1 Тогда
         тРодитель = СпрРод.ТекущийЭлемент();
         СпрСотр.ИспользоватьРодителя(тРодитель);
     Иначе
         Сообщить("Не найден родитель с кодом "+ КодРодителя);  
     КонецЕсли;
Иначе
     СпрСотр.ИспользоватьРодителя(тРодитель);// ЗДЕСЬ КАКОЙ тРодитель ? ОТКУДА ?
КонецЕсли;
// А ВОТ ЗДЕСЬ ВОПРОС: ПОЧЕМУ спрСотр ДОЛЖНО БЫТЬ НЕ ПУСТЫМ (ИЛИ ВЫБРАННЫМ)  ???
Если ПустоеЗначение(СпрСотр)=0 Тогда //ВЫ ЕГО ГДЕ ИСКАЛИ ТО ???
     СпрРод.Удалить();
     СпрСотр.Удалить();
Иначе
     Если ЭтоГруппа = 1 Тогда
         СпрСотр.НоваяГруппа();  
         СпрСотр.Новый();
     Иначе
         СпрСотр.Новый();
     КонецЕсли;
  
       текИНН = СокрЛП(ДБФ.INN);
       СпрСотр.Код =СокрЛП(ДБФ.Code); // А ЕСЛИ НЕ ИСКАЛИ ВОТ ВАМ И КОД НЕ УНИКАЛЬНЫЙ
       СпрСотр.Наименование= СокрЛП(ДБФ.Name0);
Змейкин,
03.04.13, 8:29 Робот 1 С
Есть способ организовать автоматический запуск обработок, отчетов, программ без использования планировщика задач, используя для этой цели лишь средства самой 1С. Для этого необходимо чтобы на компьютере была запущена постоянно 1С со специальной обработкой, которая в свою очередь по таймеру запустит необходимую нам обработку или отчет.
Авторские права на предоставленный материал принадлежат автору сайта http://extremallife.ru
Текст обработки:
Перем СчетчикСек;
Перем Запущен;

Процедура Сформировать() Экспорт Далее

Процедура ОбнулитьСчетчик()
Ч=0;М=0;С=0;
ТекущееВремя(Ч,М,С);
СчетчикСек=Ч*3600+М*60+С;
КонецПроцедуры

Процедура ОткрытьОбработкуВыгрузкиДляторговыхТочек()
ОткрытьФорму("Отчет","Ночной дозор",КаталогИБ()+"ExtFormsНашаВнешняяОбработка.ert");
КонецПроцедуры

Процедура ОбновитьСчетчик_()
СчетчикСек = СчетчикСек+1;
Часов = Цел(СчетчикСек/3600);
Минут = Цел((СчетчикСек-Часов*3600)/60);
Сек = СчетчикСек - Часов*3600 - Минут*60;
Форма.Цифры.Заголовок(Формат(Часов,"Ч(0)2")+":"+Формат(Минут,"Ч(0)2")+":"+Формат(Сек,"Ч(0)2"));

Если (Часов=1)и(Минут=1)и(Сек=1) тогда
Форма.ОбработкаОжидания("",1);
ОткрытьОбработкуВыгрузкиДляторговыхТочек();
ОбнулитьСчетчик();
Запущен=0;
Сформировать();
КонецЕсли;
КонецПроцедуры

Процедура Сформировать() Экспорт
Если Запущен=0 тогда
Форма.ОбработкаОжидания("ОбновитьСчетчик_",1); //Запускаем таймер
Сообщить(12);
Форма.кнСтарт.Заголовок("Стоп");
Запущен=1;
Иначе
Сообщить(13);
Форма.ОбработкаОжидания("ОбновитьСчетчик_",0); //Отключаем таймер
Форма.кнСтарт.Заголовок("Старт");
Запущен=0;
КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
ОбнулитьСчетчик();
Сформировать();
КонецПроцедуры

СчетчикСек=0;
Запущен=0;
Процесс=0;


В данном конкретном примере Запускается обработка КаталогИБ()+»\ExtForms\НашаВнешняяОбработка.ert» в час ночи.

Acid, Gleef, Vofka,
12.03.13, 19:14 Импорт счета при импорте справочников
Цитата(dobruan @ 12.03.13, 18:45) *
Можете подробно, что быстрее было разобраться? Может имели дело с такой ситуацией?


Данную обработку не использовал. В основном писал сам. Щас пример выложу.

Вы уже скорее всего загрузили справочник ОС с помощью данной обработки.
Далее типа что-то такого:
//===============================================================================
Функция КаталогФайла(Файл="")
    
    Каталог=""; Файл=ПутьФайла; Разд=Найти(Файл, "\");
    
    Пока 0<Разд Цикл
        Каталог=Каталог+Лев(Файл, Разд); Файл=Сред(Файл, Разд+1); Разд=Найти(Файл, "\");
    КонецЦикла;
    
    Возврат(Каталог);
    
КонецФункции // КаталогФайла()
//================================================================================
=
Процедура ПриНачалеВыбораЗначения(Элемент, Продолжать) // предопределенная процедура
    Перем Файл; Каталог=КаталогФайла(Файл);
        
    Если Элемент="ПутьФайла" Тогда
        Выбор=ФС.ВыбратьФайл(0, Файл, Каталог, "Файл загрузки", "Таблицы (*.xls)|*.xls", "xls");
        Если Выбор=1 Тогда ПутьФайла=Каталог+Файл; КонецЕсли;

        Попытка
            Excel = СоздатьОбъект("Excel.Application");
        Исключение
            Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
            Возврат;
        КонецПопытки;
            
        Попытка
            Книга = Excel.WorkBooks.Open(ПутьФайла);
        Исключение
            Предупреждение("Ошибка отрытия Книги " + ПутьФайла);
            Возврат;
        КонецПопытки;
        Строк = Excel.Cells.CurrentRegion.Rows.Count;
        Спр = СоздатьОбъект("Справочник.ОС");//Ваш справочник Основные средства
        НачатьТранзакцию();
        К = 0;
        Для СчетчикЦикла = 1 По Строк Цикл
            
            Если К = 100 Тогда // Транзакция по 100 элементов
                ЗафиксироватьТранзакцию();
                К = 0;
                НачатьТранзакцию();
            КонецЕсли;
            Наименование = СокрЛП(Строка(Excel.Cells(СчетчикЦикла, 1).Value));
            КодСчетаУчета =СокрЛП(Строка(Excel.Cells(СчетчикЦикла, 2).Value));  
            КодСчетаЗатрат=СокрЛП(Строка(Excel.Cells(СчетчикЦикла, 3).Value));
            Если Спр.НайтиПоНаименованию(Наименование) = 1 Тогда
                Спр.СчетУчета = СчетПоКоду(КодСчетаУчета);
                Спр.СчетЗатрат = СчетПоКоду(КодСчетаЗатрат);
                Спр.Записать();
            КонецЕсли;
            Состояние(СчетчикЦикла);
        КонецЦикла;
        ЗафиксироватьТранзакцию();
        Excel.Quit();
    КонецЕсли;
КонецПроцедуры


Где нужно - поправите, это только пример дозагрузки 2 реквизитов в уже созданный справочник.
dobruan,

3 страниц V  < 1 2 3
RSS Текстовая версия Сейчас: 23.04.24, 18:46
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!