Внешний отчет/обработка - печатает объект "Дерево+Таблица" в древовидной форме, используя внешнюю компоненту Yoksel. Выводит столбцы с учетом параметров колонок "ТаблицыЗначений" (заголовка, форматной строки, положения). Благодаря использованию внешней компоненты Yoksel, выводит на печать с учетом вложенности узлов, создавая соответствующие группировки в печатной форме, которые сохраняются и при сохранении в Excel.
Если Вы не знаете, что такое "Дерево+Таблица" и с чем его едят, познакомиться можно тут: http://infostart.ru/public/74192/
Если уже знаете, то продолжим. Скачайте внешнюю компоненту Yoksel с сайта http://yoksel.net.ru. Последнюю стабильную сборку можно взять тут: http://yoksel.net.ru/Hotfixes. Из скачанного архива нужно распаковать файл «SpreadSheet.dll» в папку конфигурации или в папку «Bin» платформы 1С 7.7. После чего, эту внешнюю обработку «ПечатьДерева.ert» положите в подпапку «ExtForms» папки конфигурации.
Теперь в коде любой обработки, отчета, справочника и т.д. Вашей кофигурации, где есть объект Дерево+Таблица, создайте кнопку «Печать», в формуле этой кнопки укажите процедуру «Печать()» и в процедуре «Печать()» в модуле формы обработки, отчета, справочника и т.д. напишите такой код (исключая комментарии, конечно):
Процедура Печать()
// Список параметров печати
СпПарам = СоздатьОбъект("СписокЗначений");
// ТЗ - "ТаблицаЗначений", которая является объектом "Дерево+Таблица"
СпПарам.ДобавитьЗначение(ТЗ, "Дерево");
// "Йоксель: Дерево+Таблица" - необязательный параметр, можно задать
// строку заголовка печатной формы
СпПарам.ДобавитьЗначение("Йоксель: Дерево+Таблица", "Заголовок");
// "ИдКолонки,ИдКолонки,ИдКолонки" - необязательный параметр, список
// идентификаторов колонок "ТаблицыЗначений" через запятую, которые
// нужно вывести, кроме служебных. Служебные - "Ветка","Значек","ИмяВетки".
// Если не задан или пустая строка - то выводит все колонки, кроме
// служебных, но "ИмяВетки" выводится всегда.
СпПарам.ДобавитьЗначение("ИдКолонки,ИдКолонки,ИдКолонки", "Колонки");
// Флаг выводить узлы свернутыми или нет. Если =1, то все развернуты.
// Если =0, то все свернуты. Необязательный параметр, по умолчанию =0.
СпПарам.ДобавитьЗначение(1, "Развернуть");
// Собственно вывод на печать
ОткрытьФорму("Отчет", СпПарам, КаталогИБ()+"ExtForms\ПечатьДерева.ert");
КонецПроцедуры // Печать
И теперь при нажатии на нашу кнопку «Печать» - откроется печатная форма с нашим деревом. Щелкая мышкой по плюсикам/минусикам (слева), можно разворачивать и сворачивать узлы, наслаждаясь полученным эффектом.
Подсистема позволяет включать для разных видов документов функцию "Подписи/согласования" с отдельно настраиваемыми списками пользователей, которые могут подписывать тот или иной вид документа.
Основная суть подсистемы, состоит в том, что пока все, кто указан в настройках, не подпишут тот или иной записанный в базу документ, он не может быть проведен, хотя менять его можно. А когда он уже подписан, хотя бы одним человеком, он не может быть изменен, когда подписали все, то он сразу становится проведенным и также не может быть изменен или удален, никем кроме администратора, который имеет возможность снять за всех или поставить за всех подписи в экстренных случаях для этих целей.
Причем подсистема "умеет" рассылать уведомления по электронной почте тем, кто должен подписывать тот или иной документ, о необходимости его подписать, а также уведомления о том, что документ уже всеми подписан и проведен.
Подсистема рассчитана на установку и работу в любой конфигурации, с минимальными изменениями самой конфигурации. Используются внешние компоненты: 1С++, FormEx, Rom-Mail. Подробное описание настройки, использования и установки читайте в pdf-файле в архиве с демо-конфигурацией.
А в двух словах, имеем мини-модель мини-бизнес-процесса, которую, за счет гибкости настроек, можно использовать в разных логических смыслах;-)
Например, один из простейших вариантов, это просто когда, например, главбух и/или топ-менеджера должны «одобрить подписью» какой-то важный вид документа, вводимый подчиненными, и только тогда он будет проведен и недоступен для редактирования. Например, какое-то ежемесячное «распределение прибыли» или «выдача З/П», или «приход партий товара», или правильно заполненная «ГТД». Тут я привожу названия видов документов условно.
Или, например, посложнее, когда, скажем, пользователь формирует «заказ поставщику» из потребностей фирмы. Потом согласовывает его с поставщиком (предварительная стадия заказа), а уже после этого рассылает уведомление руководителям, о том, что заказ необходимо «одобрить», т.е. он уже согласован с поставщиком, после чего он подписывается всеми, автоматически проводится и пользователь заявляет его поставщику, т.е. уже окончательная стадия заказа.
Эту подсистему можно установить и использовать в одной конфигурации совместно с другими моими подсистемами, например, с этими:
Универсальная подсистема «Дополнительные права документов» + «Сканы документов» http://infostart.ru/public/71084/
Как их установить совместно также описано в pdf-файле к этой подсистеме в разделе "Примечание к установке".
Подсистема рассчитана на установку и работу в любой конфигурации, установка требует минимальных изменений в конфигурации, прописать пару строк в глобальном модуле и объединить с md'шкой (добавляется несколько объектов), подробнее см. описание установки. В дальнейшем, после установки в какую-либо конфигурацию, если обновлять эту конфигурацию типовыми обновлениями, то нужно будет только прописать заново эти пару строк в глобальном модуле, после обновления, и все.
"Фабрика событий" делалась для объединения и совместной работы в одной конфигурации двух подсистем "Доп. права доков" v 2.0 и "Сканы доков" v 2.0. Версии 2.0 этих подсистем уже включены и идут совместно с "Фабрикой событий". Используются внешние компоненты 1С++ (http://www.1cpp.ru) и FormEx (http://www.dorex.ru).
Если в двух словах. Подсистема "Доп. права доков" позволяет запрещать пользователям системы изменять уже введенные документы тех или иных авторов (запись, проведение, отмена проведения, пометка на удаление, изменение времени). Возможности настройки довольно гибки, для каждого автора каждому виду документов можно указать списки пользователей, которым запрещено изменение или разрешено. После настройки доп. прав, в случае если пользователь, откроет документ, который ему запрещено изменять, изменит его и попытается провести или записать, то это действие будет отменено и ему будет выдано соответствующее сообщение. Тоже в случае попытки отмены проведения уже проведенного документа, пометки на удаление или изменения времени документа в журналах документов.
Подсистема "Сканы доков" позволяет к документам «прикреплять» файлы, на формах у всех документов появляется дополнительная вкладка «Сканы» (генерируется программно), которая позволяет добавлять новые файлы к этим документам (это могут быть картинки сканов-оригиналов документов или doc, pdf, xls – файлы), удалять их, т.е. манипулировать «прикрепленными» к документу файлами, просматривать их, а соответственно и печатать прямо из формы документа.
Подсистема "Фабрика событий" ловит и рассылает события глобального модуля и форм 1С другим классам-подписчикам 1С++, используя механизм класса "МенеджерСобытий" компоненты 1С++. Позволяет объединять в одной конфигурации и параллельно работать нескольким подсистемам (классам) использующим перехват событий глобального модуля и форм.
Выложена демо-конфа, для быстрого ознакомления, в которой установлены все эти три подсистемы и совместно работают, md'шку этой конфы можно использовать для установки в другие конфигурации (см. описание установки).
В демо-конфигурации, есть также простенькие документы "Приход товаров", "Расход товаров" со справочниками "Товары" и "Пользователи", журнал "Общий" и отчет "Остатки товаров" (по регистру остатков "Остатки товаров"), это все можно использовать для тестирования и ознакомления с предлагаемым функционалом подсистем.
2. Объединить MD'шку демо-конфы с требуемой конфигурацией, выбрав галками, при объединении, только объекты (см. скриншот):
Объявление всех классов 1С++:
Обработка->defcls
Для "Фабрики событий":
Обработка->__КлассФабрикаСобытий__
Для "Доп. прав доков":
Справочник->__ДопПраваДокументы__
Справочник->__ДопПраваПользователи__
Обработка->__НастройкаДопПравДоки__
Обработка->__КлассПодсистемыДопПраваДоков__
Для "Сканов доков":
Документ->__СканыДоков__
Обработка->__УборщикСканов__
Обработка->__КлассПодсистемыСканыДоков__
3. Подключается добавлением в глобальный модуль в процедуру "ПриНачалеРаботыСистемы()", после загрузки внешних компонент 1С++ и FormEx, таких строк (также есть и на скриншоте):
З.Ы. Важен порядок подключения подсистем в коде глобального модуля в процедуре "ПриНачалеРаботыСистемы()", т.е. сначала код подключения "Фабрики событий", потом "Доп. прав доков", потом "Сканов доков", так будет оптимальнее всего.
З.Ы.Ы. В дальнейшем, если обновлять конфигурацию типовыми обновлениями, то нужно будет только прописать заново эти пару строк в глобальном модуле, после обновления, и все.
З.Ы.Ы.Ы. На самом деле можно включать/отключать или не устанавливать ту или иную подсистему в конфигурацию, кроме "Фабрики событий", она должна быть всегда, а также дописывать, под использование с "Фабрикой", новые подсистемы и объединять их в разных вариациях и количествах, на сколько фантазии программиста хватит;-)
Вот, например, как тут:
Универсальная подсистема «Подписи/согласования документов» http://infostart.ru/public/73774/
Подсистема рассчитана на установку и работу в любой конфигурации, установка требует минимальных изменений в конфигурации (см. описание).
После установки подсистемы к документам становится возможным «прикреплять» файлы, на формах у всех документов появляется дополнительная вкладка «Сканы» (генерируется программно), которая позволяет добавлять новые файлы к этим документам (это могут быть картинки сканов-оригиналов документов или doc, pdf, xls – файлы), удалять их, т.е. манипулировать «прикрепленными» к документу файлами, просматривать их, а соответственно и печатать прямо из формы документа.
Все это с минимальными изменениями конфигурации, пару строк в глобальнике и установка md'шки (добавляется несколько объектов). Используются внешние компоненты 1С++ (http://www.1cpp.ru) и FormEx (http://www.dorex.ru).
В архиве демо-конфа, с подсистемой, md'шка которой понадобится при установке в какую либо другую базу. В демо-конфе открываете формы документов, переходите на вкладку "СКАНЫ" и наслаждаетесь полученным эффектом...
Есть обработка "Уборщик сканов", для удаления файлов, ссылки на которые были удалены из базы при удалении помеченных объектов. Файлы хранятся отдельно в подпапке папки ИБ (создается программно).
В обработке реализованы алгоритмы (функции) перевода средствами 1С целых и дробных чисел из одной позиционной системы счисления с неотрицательными целочисленными основаниями в другую. При переводе отрицательных чисел знак сохраняется. Диапазон возможных систем счисления от 2-х до 36-ти. Также реализован перевод в римскую систему счисления из арабской (10-ричная) и обратно (галка «Вкл. римские числа» на форме обработки). Перевод из/в римскую систему счисления реализован только для целых неотрицательных чисел. «Расширенные римские цифры» также не поддерживаются.
Для бесконечных периодических дробей в результате, есть возможность указания точности выводимого дробного числа. По умолчанию - "0" знаков после запятой. Цифры выше 9-ти обозначаются латинскими буквами от A до Z. Регистр вводимого символа значения не имеет. В итоговом числе символы отображаются в верхнем регистре. Дробная часть отделяется от целой как точкой, так и запятой.
Перед переводом производится проверка на корректность вводимого числа, т.е. на допустимость символов и цифр для данной системы счисления или присутствия более одной точки/запятой или более одного знака «минус» перед числом. Так, например, цифры 5 не может быть в 4-ричной системе счисления, а символа «R» в 20-ричной системе.
Возможна проверка в виде обратного перевода - кнопка «Обратно». Направление последнего перевода показывается стрелкой, расположенной слева на форме.
Объявления реализованных в обработке функций для перевода:
//-------------------------------------------------------
Функция глПереводИзДесятичнойВПроизвольнуюСистемуСчисления(Знач ЧислоДляПеревода, Знач ОснованиеРезультата=2,Знач Погрешность=0) Экспорт Далее
Функция глПереводИзПроизвольнойСистемыСчисленияВДесятичную(Знач СтрокаДляПеревода, Знач ОснованиеЧисла=2, Знач Погрешность=0) Экспорт Далее
Функция глПереводПроизвольныхСистемСчисления(Знач СтрокаДляПеревода, Знач ОснованиеЧисла=10, Знач ОснованиеРезультата=2, Знач Погрешность=0) Экспорт Далее
Функция глПроверитьСтрокуПоПроизвольнойСистемеСчисления(Знач СтрокаДляПеревода, Знач Основание) Экспорт Далее
Функция глПереводИзДесятичнойВРимскуюСистемуСчисления(Знач ЧислоДляПеревода) Экспорт Далее
Функция глПереводИзРимскойВДесятичнуюСистемуСчисления(Знач СтрокаДляПеревода) Экспорт Далее
Функция глПроверитьСтрокуПоРимскойСистемеСчисления(Знач СтрокаДляПеревода) Экспорт Далее
//-------------------------------------------------------
Демонстрация простенького алгоритма переноса слов в тексте по слогам при разбивке текста по строкам фиксированной длины, а теперь и с выравниванием строк текста по ширине. В большинстве случаев удовлетворяет...
TextHyphenationAlignJustify.zip - с выравниванием строк текста по ширине.
TextHyphenation.zip - тоже, но без выравнивания (более старый вариант).
На самом деле существует несколько ограничений для использования средств WMI в 1С 7.7. Это и отсутствие конструкции перебора элементов коллекции, как в 1С 8.х, т.е. «Для каждого...Из...Цикл...КонецЦикла;». И отсутствие аналога восьмерочной функции «ПолучитьCOMОбъект».
Но используя пару приведенных в обработке функций (как упрощенные примеры), вполне можно разрешить эти проблемы, не вдаваясь в написание своих COM-Объектов, dll’к (внешних компонент) или написания всего кода работы с WMI объектами на других языках и выполнения его из 1С 7.7.
Как известно 1С 7.7 вообще не поддерживает Unicode, а бывают случаи, когда надо или хочется. Один из характерных примеров – это наименования и коды импортных товаров (Китай, Япония), как они идут у поставщика, а это иероглифы на самом деле. Опять же, необходимость их вводить, хранить и редактировать в базе может возникнуть, если мы хотим формировать заказы поставщику из 1С сразу с теми наименованиями, что приняты у поставщика, на его родном языке, так сказать. Вот этот пример и призван показать один, из возможных, способов это сделать в 1С 7.7.
Естественно, что потом возникнет необходимость и выводить эти Unicode-строки на печать, при печати документа заказа поставщику с такими товарами, но этот вопрос также имеет массу возможных решений. Например, вывод документа сразу в файл, это может быть html, а может быть и Excel.
Но вернемся к нашей теме… В zip-архиве Вы можете скачать демо-базу, в которой реализовано все о чем мы будем говорить. Код открыт, как говориться;-)
Результат, которого мы будем добиваться, примерно, таков (см. рис. 1):
Рис. 1
Т.е. фактически мы даем возможность пользователю работать с Unicode-строкой, как с обычным текстовым реквизитом справочника, просматривать, редактировать и хранить его в базе 1С.
Естественно, что применение этого способа не ограничивается только реквизитами справочников и формами справочников, но покажем мы его, на примере справочника товаров, в котором будут два реквизита «поддерживающих» Unicode-строки (см. рис. 1).
Отображать Unicode-символы мы будем с помощью ActiveX’са на форме Internet Explorer. Поэтому он должен быть установлен в системе (Internet Explorer) и также нам понадобятся внешние компоненты 1С++ (http://www.1cpp.ru) и FormEx (http://www.dorex.ru), чтобы добавить и отобразить на форме этот ActiveX.
Сразу оговорюсь, мы будем выполнять JavaScript локально на машине, поэтому политики безопасности Internet Explorer должны быть настроены соответственно. А также в операционной системе должны быть необходимые шрифты для отображения Unicode-символов, иероглифов, например. Хотя, например, в Windows XP шрифтов этих хватает, на самом деле.
Итак, суть идеи, примерно, такова. В базе 1С Unicode-строки будем хранить как коды символов, разделенных точкой с запятой, в строковом поле неограниченной длины. На форме справочника будет AxtiveX-контрол IE, куда мы, при открытии формы справочника, подгружаем заготовленный html-код с JavaScript’овыми функциями (он записан в первой ячейке общей таблицы демо-конфигурации). Эти JavaScript’овые функции мы будет потом вызывать из 1С. Они и реализуют интерфейс между INPUT’ом html-кода (в котором и будут отображаться Unicode-строки) и строковым реквизитом справочника в базе 1С (с кодами Unicode-символов разделенных точкой с запятой). JavaScript’овые функции позволяют передать в них строку с кодами символов и отобразить эти символы в INPUT’е AxtiveX-контрола IE, преобразовав их из кодов в символы. И наоборот, преобразуют Unicode-строку из INPUT’а AxtiveX-контрола IE в строку кодов символов разделенных точкой с запятой и возвращают ее в 1С. Таким образом, при открытии формы нам нужно прочитать соответствующий строковый реквизит справочника и вызвать соответствующие JavaScript’овые функции, передав им эту строку в качестве параметра. Они преобразуют коды в символы и отобразят их в AxtiveX-контроле в INPUT’е как Unicode-строку. А при записи элемента справочника, наоборот, вызвать соответствующие JavaScript’овые функции, которые вернут строку, с преобразованными в коды символами Unicode-строки, разделенными точкой с запятой, и записать эту строку в базу 1С в соответствующий реквизит. Это, если упрощенно, конечно.
Практическую реализацию этой идеи Вы можете разобрать и посмотреть исходники, скачав zip-архив и
открыв демо-базу из него.
В демо-конфигурации есть справочник «Товары». В форме элемента этого справочника вводим или редактируем реквизиты, в том числе и Unicode-строки (поля «поддерживающие» Unicode – беленькие). А в форме списка только просмотр полей текущего элемента (поля «поддерживающие» Unicode – серенькие). См. рис. 2.
Рис. 2
Единственно, чтобы вставить из буфера или скопировать в буфер обмена, что либо из/в эти поля («поддерживающие» Unicode), нужно выделить мышкой текст в этом поле и нажав правую кнопку мышки выбрать соответствующий пункт контекстного меню, т.е. «Вставить» или «Копировать». См. рис. 3.
Рис. 3
Больше особых неудобств замечено не было при работе со стороны пользователя...
Место, в которое мы с вами попали - это ад. Да, да, не пугайтесь, это он и есть. Правда, вы наверно ожидали увидеть огромную огненную печь, стоны, крики, зловоние, да чертей-чудовищ. Нет, это не так, ведь чем можно достать бестелесную душу, которой не страшны ни холод, ни голод, ни физическая боль? Да и к страшным чертям можно привыкнуть, благо времени на это хватит. Нет, самая страшная пытка это бесконечное однообразие наедине с собой, со своей грешной душой. Это однообразный серый лабиринт, который как бы парит в окружающей его серой пустоте. Душа будет бродить по нему бесконечно в одиночестве и однообразии. Но есть и хорошая новость, вы можете попытаться найти выход из этого лабиринта, обеспечив себе тем самым возможность выбраться из преисподней, прожить еще одну жизнь и, возможно, попасть в более приятное место. Но это надо сделать за определенное время, если не успеете, то начнете все сначала, успеете - вы, на время, сможете покинуть это жуткое место. Увидев выход - вы его не перепутаете ни с чем, это белое сияние на фоне серый стены, перепутать невозможно. Подойдите к нему поближе и вас ждет спасение. Удачи вам и приятной игры.
Лабиринт при открытии или нажатии кнопки "Создать новый" генерируется каждый раз новый, так что играть вам не надоест. Тем более, что размеры лабиринта при генерации можно задавать самому.
Для игры необходимо, чтобы в системе был установлен браузер Internet Explorer 6 или выше. После запуска обработки - щелкните один раз мышкой на изображении или нажмите кнопку начать заново, чтобы клавиши управления начали работать.
Также в архиве лежит файл IEScriptStatements.reg. Он нужен для того, чтобы при генерации больших лабиринтов (больше 30х30) Internet Explorer
не выдавал сообщения вида: ------------------------------ Остановить выполнение этого сценария?
Сценарий на этой веб-странице замедляет работу Internet Explorer. Если не остановить сценарий, компьютер может перестать реагировать на действия пользователя. ------------------------------
Запустите его перед тем как откроете 1С и запустите обработку с игрой. Он просто добавляет ветку в реестр: HKEY_CURRENT_USER\Software\Microsoft\InternetExplorer\Styles И создает в ней DWORD параметр с именем MaxScriptStatements с большим предельным значением максимально возможных итераций для выполняемых в браузере скриптов. Что позволит избавиться от этой особенности Internet Exlorer при выполнении сложных скриптов.
Игра тик-так-ту ведется на поле из 9-ти клеток. Оба играющих имеют по три фишки. В первом туре играющие по очереди расставляют свои фишки (по одной за ход) на свободных клетках. Во втором туре, когда размещены все 6-ть фишек, играющие поочередно перемещают по одной фишке на свободные соседние клетки. Соседней считается клетка, расположенная в одном шаге от данной. Направления шагов, связывающих клетки, показаны на третьем скриншоте. Выигрывает тот, кто первым расположит свои фишки по прямой линии. Расставлять и перемещать свои фишки можно перетягивая их мышкой.
Проверяем Джеймса Максвелла и идем по его стопам;-) Перед Вами сосуд с газом, разноцветные шарики - молекулы газа. Двигая отвертие в перегородке (мышкой), необходимо, чтобы шарики одного цвета оказались с одной стороны, а шарики другого цвета - с другой.
Позволяет запрещать пользователям системы изменять уже введенные документы тех или иных авторов (запись, проведение, отмена проведения, пометка на удаление, изменение времени). Возможности настройки довольно гибки, для каждого автора каждому виду документов можно указать списки пользователей, которым запрещено изменение или разрешено. После настройки доп. прав, в случае если пользователь, откроет документ, который ему запрещено изменять, изменит его и попытается провести или записать, то это действие будет отменено и ему будет выдано соответствующее сообщение. Тоже в случае попытки отмены проведения уже проведенного документа, пометки на удаление или изменения времени документа в журналах документов.
Использование класса "Перехватчик" компоненты 1С++ позволяет минимизировать изменения конфигурации при установке надстройки. По сути, объединить конфигурации, добавить несколько строк в глобальном модуле в процедуре "ПриНачалеРаботыСистемы" для версии 1.1. Подробнее по установке в файле "setup.doc" в архиве.
В архиве лежит демо конфа, в которой есть все необходимое, чтобы ознакомиться с надстройкой и посмотреть ее в действии, пару простеньких видов документов (приход, расход товаров), общий журнал доков, регистр и отчетик по остаткам товаров, справочники товаров и пользователей, а также данная подсистема доп. прав. Все в главном меню "Наше меню". Также md'шка этой конфы Вам понадобится при установке. И в архиве лежат файлы описания подсистемы - "readme.txt", и порядка установки этой подсистемы в другую конфигурацию – "setup.doc".
Просмотр и настройка дополнительных прав производится в специальной одноименной обработке. См. скриншот. Слева в дереве двойным щелчком левой кнопкой мышки выбираем вид документа некоторого автора, после чего справа в списках пользователей будет отображено, каким пользователям запрещено изменять данный вид документа данного автора, а каким разрешено. Настройка осуществляется переносом пользователей из списка запрещенных в список разрешенных и обратно. Перенос можно производить, как двойным нажатием левой кнопкой мышки на пользователе в списке разрешенных или запрещенных, таким образом он будет перемещен в противоположный список. Или кнопками переноса всех или выделенного пользователя между списками. Кнопки со стрелочками, указывающими направление переноса, расположены между этими списками.
В случае, если добавлен новый пользователь в 1С, то, чтобы он появился в списке пользователей (как авторов документов, так и в списках запрещенных/разрешенных), нужно, чтобы он зашел (достаточно одного раза) под собой в базу 1С в режиме предприятия.
Правила: 15-ть спичек выкладываются в три ряда, по 3, 5, 7 спички в ряду. Противники ходят по очереди. За один ход можно взять любое количество спичек из произвольного ряда (но только из одного ряда). Тот, кто взял последнюю спичку — проиграл. Количество спичек, которые разрешается брать, — неограниченно. Можно первым же ходом "смести" весь первый ряд, забрав из него все 7 спичек. Но нельзя, например, взять одну спичку из первого ряда и еще одну — из второго.
Взять спичку - кликом мышки. Чтобы взять, например, три спички из ряда за один ход - щелкните мышкой по третьей справа спичке в ряду. Примечание: отчет/обработка всегда должен быть внешним.
Дети, не верьте взрослым! Спички тоже могут быть игрушкой :-))) Выбираем головоломку кликом на кнопке с номером головоломки, читаем задание, убираем и возвращаем спички кликом мышки на спичках, пока не решим головоломку, потом выбираем другую. Четыре в одной :-) Примечание: файл отчета/обработки должен быть внешним всегда.
Как всегда летом, после жаркого рабочего дня, прогулка к морю, купание и созерцание окружающего (вот ракушек на берегу, например) вдохновило меня на эту головоломку. В нее Вы можете играть (как сами, так и со знакомыми и детьми) прямо в отпуске, на песке, не дожидаясь первого сентября, когда дети пойдут в школу и их начнут просто пичкать знаниями, тем временем, прямо во время отдыха, Вы можете научить их думать, что гораздо ценнее:-)) А пока можете потренироваться сами в 1С:-)
В песке выроем 7 ямок на одной линии по горизонтали. В них положим 6 ракушек, три темные в три ямки слева, а три светлые в три ямки справа, по одной ракушке в каждую ямку, по середине останется пустая ямка.
За каждый ход можно пpоизводить одну из следующих опеpаций: 1. Пеpеместить ракушку в соседнюю с ней свободную ямку; 2. Пеpеместить ракушку в свободную ямку котоpая находится за ее непосpедственным соседом (пеpепpыгнув чеpез соседнюю ракушку);
Необходимо за минимальное число ходов поменять местами темные и светлые ракушки.
Как играть: щелкаете дважды левой кнопкой мышки на ячейку с ракушкой, а потом щелкаете дважды левой кнопкой мышки на ячейку, в которую хотите, чтобы переместилась ракушка, это будет один ход.
Пусть имеется шахматная доска размером 3 х 3. На ней в углах расположены четыре коня (два черных и два белых). Необходимо за минимальное число ходов изменить на противоположное положение двух черных и двух белых коней. Кони ходят (перемещаются по доске) привычным образом: на одно поле горизонтально и на два - вертикально за ход либо, наоборот, на два поля горизонтально и на одно - вертикально.
Как играть: щелкаете дважды левой кнопкой мышки на ячейку с фигурой коня, а потом щелкаете дважды левой кнопкой мышки на ячейку, в которую хотите, чтобы пошел конь, это будет один ход.
Пусть имеется шахматная доска, каждая сторона которой содержит 100 клеток. Все 10000 полей доски заняты черными шашками. В нашем случае разрешенными ходами являются "модификации", т.е. операции замены в каком-то ряду (строке или столбце) всех шашек ряда черного цвета на белые и белых на черные. Необходимо за минимальное число ходов получить 1990 белых шашек, начиная с позиции, когда все шашки были черными.
Как играть: щелкаете дважды левой кнопкой мышки на ячейку с шашками, выбираете вариант "Модифицировать строку" или "Модифицировать столбец", это будет один ход. Потом повторяете эти действия, пока не наберете необходимое количество для победы. Текущее кол-во ходов и кол-во белых шашек выводится в заголовке формы.
Примечание: для отображения шашек используются символы шрифта "Wingdings", обычно в ОС Windows он уже есть по умолчанию…
Генератор прямоугольных лабиринтов (алгоритм Прима, алгоритм Краскала) любого размера. Можно походить поиграть. Цель - найти выход, дойти до финиша. Управление - стрелки. Старт - левый верхний угол лабиринта, финиш - правый нижний. Можно посмотреть с любой позиции решение (алгоритм волновой трассировки), сохранить/загрузить игру и продолжить из/в файл. И, для чего собственно и писалось, распечатать (слить в Excel) лабиринт, можно и с решением. Есть три режима игры (игрок может играть в любом из них): полная видимость (все стены лабиринта видны); частичная видимость (с запоминанием пути) - видны стены только возле игрока и те, где он уже был; частичная видимость (без запоминания пути) - видны только стены вокруг текущей позиции игрока. В режиме с ограниченной видимостью есть возможность настраивать дальность видимости стен лабиринта вокруг текущей позиции игрока.
В версии 1.1 при игре игрок не видит весь лабиринт целиком, а только соседние стены и при прохождении "открывает" новые видимые области. Гораздо интересней проходить лабиринт и играть.
В версии 1.2 введены три режима игры (игрок может играть в любом из них): полная видимость (все стены лабиринта видны); частичная видимость (с запоминанием пути) - видны стены только возле игрока и те, где он уже был; частичная видимость (без запоминания пути) - видны только стены вокруг текущей позиции игрока.
В версии 1.3 для режимов с ограниченной видимостью добавлена возможность настройки дальности видимости вокруг игрока, а также поправлены баги перерисовки в режиме с ограниченной видимостью, плюс мелкие доработки.
В версии 1.4 оптимизирована отрисовка видимых стен при перемещении в режиме ограниченной видимости без запоминания пройденного пути.
В версии 1.5 немного оптимизирована отрисовка видимых стен при отображенном на экране решении при перемещении в режиме ограниченной видимости без запоминания пройденного пути (3-й режим, решение на экране).
В версии 1.6 вывод на экран игры перенаправлен с ТЗ на форме в пустую Таблицу. И красивше стало и побыстрей рисует. Плюс мелкие доработки.
Конфигурация для ведения архива графических файлов, фотографий и т.п.
Позволяет заносить расширенную информацию об изображенных объектах на фото, местах съемки, периоде, когда предположительно было снято, теме фотографий, описании. Предоставляет возможности разнообразного отбора фотографий по вышеперичисленным параметрам, экспорта/импорта файлов, просмотра как в пределах конфигурации, так и внешними приложениями.
Конфигурация для ведения каталога мототехники и подходящих к ней запчастей, с возможностью просмотра изображений мопедов, мотоциклов и запчастей, также есть возможность хранения информации из каких блоков (со схемами этих блоков) состоит мопед и какие запчасти входят в этот блок или подходят к этому мопеду. Позволяет упростить выбор или подбор подходящих запчастей к мототехнике для ремонта. Позволяет упростить выбор мототехники покупателем, дает возможность посмотреть внешний вид мопеда, его стоимость, количество на складе для покупателя, определиться с количеством и ценой имеющихся запчастей для ремонта, подобрать альтернативные запчасти для ремонта.
Есть возможности различного экспорта информации в Excel (используется OLE) с изображениями и возможность чтения цен и остатков товаров на складах из конфигурации "Торговля+Склад для Украины" 7.70.012 (используется OLE).
Внешняя компонента для 1С:Предприятие 7.7 с исходниками (Delphi-5).
Выполняет одну функцию: сделать снимок экрана и положить в файл с заданной компрессией.
Возвращает =1 - успешно, =0 - не успешно. Пример использования:
Просмотр DD-файлов (словарь данных, файл с расширением *.DD, лежащий в каталоге базы, если для хранения таблиц базы данных используются файлы DBF/CDX) в «человеческом» виде. Подробно описаны предназначения всех таблиц базы, их поля, индексы. Печать содержимого, списка таблиц базы, их предназначения/описания, информации о полях и индексах таблиц.
Облегчает изучение внутренней архитектуры и хранения данных в 1С:Предприятии.
Рекомендуется использовать совместно с внешним отчетом/обработкой «DBF_1CViewer_2_0.ert». Для этого положите оба внешних отчета/обработки («DD_1CViewer_1_0.ert» и «DBF_1CViewer_2_0.ert») в папку «ExtForms» папки базы данных. Скачать «DBF_1CViewer_2_0.ert» можно тут: http://venger.narod.ru/storage/1Cv77_DBF_1CViewer_2_0.zip или тут: http://infostart.ru/profile/20743/projects/3019
Тогда будет доступна возможность открыть DBF/CDX файлы прямо из DD 1CViewer’а и посмотреть, распечатать их содержимое: кнопка «Просмотр таблицы», вариант «DBF 1CViewer’ом».
Подробное описание использования в readme-файле в архиве.
Просмотр dbf-файлов и cdx-файлов, записей dbf-файла (в том числе и удаленных), информации о полях dbf-файла, информации о индексах cdx-файла. Возможность выбора текущего индекса для просмотра из индексов cdx-файла, возможность переиндексации dbf-файла. Печать содержимого dbf-файла, информации о его полях и информации о индексах cdx-файла.
В версии 2.0 добавилась возможность загружать записи dbf-файла порциями и просматривать, листая назад или вперед, что актуально для больших dbf-файлов. А также возможность сжатия, убрав удаленные записи.
Подробное описание использования в readme-файле в архиве.
Задача обойти шахматную доску конем так, чтобы побывать на всех клетках по разу. Ходит конем ("Г") в те клетки в первую очередь, с которых потом меньше вариантов пойти дальше, с учетом тех, на которых уже был, рекурсивно перебирая варианты ходов.
Рекурсия - как женщина, затратна, но как красива, чертовка :)
И тот, кто найдет в коде цикл, пусть кинет в свой монитор камнем :-)
Демонстрация рекурсивной работы с ТаблицейЗначений (двухмерный массив, по сути), СпискомЗначений (одномерный массив) и с родителями элемента справочника (типа, дерево можно сказать).
Просмотр dbf-файлов и cdx-файлов, записей dbf-файла (в том числе и удаленных), информации о полях dbf-файла, информации о индексах cdx-файла. Возможность выбора текущего индекса для просмотра из индексов cdx-файла, возможность переиндексации dbf-файла. Печать содержимого dbf-файла, информации о его полях и информации о индексах cdx-файла. dbf-файл загружается целиком, т.е. файлы с миллионами записей лучше не загружать.
Подробное описание использования в readme-файле в архиве.
Пример реализации суммирования (среднее, минимум, максимум, количество чисел) выделенных ячеек отчетов, печатных форм, да и других приложений из 1С:Предприятие 7.7 как в листах Excel
Открываете конфигурацию в режиме программы, включаете какой-либо режим просмотра (кнопки на панели инструментов или пункты меню Режима просмотра), запускаете отчеты и выделяете нужные ячейки отчетов, копируете их в буфер обмена (Clipboard) и видите в строке состояния результат. При включенном режиме (кроме обычного), опрос буфера происходит каждые 100 миллисекунд, если в буфере появились текстовые данные, то они добавляются к уже скопированным и происходит пересчет с учетом добавленных данных, буфер при этом очищается, для того, чтобы определить новые скопированные данные. Таким образом можно суммировать и т.д., не связные диапазоны таблиц, выделяя нужные ячейки и копируя, несколько раз подряд. Если нужно начать заново, то нажимаем Сброс. Если необходимость в суммировании (или других режимах исчерпана), то стоит перейти в обычный режим (кнопка на той же панели инструментов или пункт меню Режима просмотра), для того, чтобы не происходило очищение буфера, если туда попали текстовые данные. При закрытии 1С, естественно опрос буфера прекращается, и режим становится обычным. При переключении режимов, допустим из суммы в среднее, будет показан результат для того, что было уже скопировано, чтобы начать заново, нажимаем Сброс. Как приятное следствие, Вы можете скопировать ячейки из одного отчета, потом из другого, а потом, вообще, из открытого листа Excel, например, или Word, или Блокнота, и это все будет просуммировано (или другое, в зависимости от режима) и результат выведен в строку состояния.
Внешняя компонента AddIn_V7MyClipboard.dll, лежит в папке конфигурации. Выложено на этом сайте, как внешняя компонента Буфер обмена.
Автор: Venger Alex, Odessa, 2008
Зеркало на Инфостарт: http://infostart.ru/profile/20743/projects/2149/
Простенький учебный пример (минут за двадцать накидал), чисто для иллюстрации основной идеи допроведения документа, при котором можно сносно реализовать, если в документе изменяются, удаляются старые (уже проведенные) строки или меняется порядок строк, а не только добавляются новые.
Пример несколько упрощенной задачи, в которой можно это применить: Документ "Расход товаров", который служит для отражения в системе учета фактов продажи товаров и списывает их со склада. Документ вводится один раз в начале смены и остается активным до конца смены. Ввод новой продажи в течении смены осуществляется добавлением новых строк в документ и отработки процедуры “Допровести” (одноименная кнопка в форме). Процедура “Допровести” должна сформировать движения по списанию выбранных товаров, контролируя наличие необходимого их количества на складе с учетом ранее проданных товаров, введенных в этом документе. Т.е. необходимо реализовать режим допроведения документа (уже проведенные строки не должны проводиться повторно) с поддержкой в актуальном состоянии временного расчета регистра с учетом уже записанных при предыдущих продажах в этом документе движений.
Конфигурация содержит справочник товаров, регистр остатков товаров и пару документов: приход товаров и расход товаров, где и организовано допроведение. И отчет по остаткам для контроля результатов.
Сохраняет иерархию в многоуровневом справочнике (кто у кого родитель-группа) в файл и/или восстанавливает ее (иерархию) из файла. Новые элементы не создаются. Поиск элементов по коду.
Порядок восстановления:
1. Открываем базу (где может быть загружена резервная копия) из которой хотим сохранить иерархию справочника в файл. Запускаем обработку, выбираем "Вид справочника" (что выгружать) и "Файл" (куда выгружать). Жмем кнопку "Выгрузить".
2. Открываем базу (куда хотим загрузить иерархию справочника), запускаем
обработку, выбираем "Файл", который мы перед этим выгружали. Жмем кнопку
"Загрузить".
Две версии. Учет резерва реализован только для версии ТиС для Украины (релиз 012). Для конфигурации ТиС ред. 9.2 на скорую руку переделывал для того, чтобы выложить для иллюстрации, у кого нет украинских конфигураций, чтоб не париться с поиском. Резервы, кому нужно, добавить можно, если что. Просто в украинской другая несколько организация резервов и работы с ними. Не требует изменения конфигурации.
Изначально делалось для базы, где не только в минуса нельзя было работать, но и с учетом зарезервированных товаров, т.е. если не хватает на складе с учетом резерва, то расходная тоже не проводится, как и при недостаточном количестве вообще. Так еще и ко всему, был учет минимального остатка (по всем складам), т.е. если не хватает на складе, если вычесть минимальный, то тоже расходную не проведет. И плюс был еще отдельный минимальный остаток по складам (по каждому) для СТО. Соответственно, при перепроводке групповой документов, когда при работе с базой активно вводятся документы задним числом, меняются минимальные остатки, резервируется товар, возникают ситуации, когда товаров не хватает в какой-то момент в прошлом. И в том числе стопорится перепроводка, надо исправлять и запускать перепроводку заново. А так сразу видно, где будут проблемы и можно поправить их заранее, чтоб потом без помех запустить перепроводку документов. На тот момент искать особо чужие не стал - задача тривиальная. Наваял свою. Уже успел забыть про нее, админ пользуется. А вспомнил, пришлось упростить для типовых, чтоб выложить.
Две версии:
- Торговля+Склад для Украины (7.70.012) - 10.06.2008
- Торговля+Склад, ред. 9.2 (7.70.947) - 01.10.2008
Когда запустите обработку, то если Вы дважды щелкните левой кнопкой мышки (или выделите ячейку и нажмете Enter) на какой-нибудь из сереньких ячеек таблиц (печатных форм), то 1С вылетит. А вот если закинуть кнопку на форму в режиме конфигуратора, то все отработает как положено, т.е. выполнится предопределенная процедура "ОбработкаЯчейкиТаблицы" и Вам об этом будет сообщено в окошке "Предупреждение".
Все эти *.bat файлы принимают параметры (подробно описаны в каждом файле), рекомендуется сделать отдельный пакетный файл для их запуска с нужными параметрами.
Примечание: Пакетный файл (англ. batch file) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла, программа — интерпретатор (как правило COMMAND.COM или CMD.EXE) читает его строка за строкой и последовательно исполняет команды. Пакетные файлы полезны для автоматического запуска приложений. Основная область применения — автоматизация наиболее рутинных операций. Примерами таких операций могут служить —копирование, перемещение, переименование, удаление файлов; работа с папками; архивация; создание резервных копий баз данных и т. п.
База данных MS Access 2000.
Данная разработка позволит создать автоматизированную систему учета товаров (мототехника и запчасти) на складах предприятия, с возможностью резервирования товаров покупателями и подбора подходящих альтернативных запчастей для ремонта или продажи покупателям. Справка по работе с программой прилагается в архиве в файле Help.doc.
Установка - распаковать в папку, запустить файл Warehouses.mdb.
Автоматизированная система учета расходов и наличных средств в кассах предприятия v 0.9b
База данных MS Access 2000.
Данная разработка позволит автоматизировать учет расходов предприятия и наличных средств в кассах.
Установка - распаковать в папку, запустить файл MyPurchasings.mdb.
Примечание: просмотр документа из списка документов по клавише F3
Автоматизированная система учета домашних расходов v 0.9b
База данных MS Access 2000.
Данная разработка позволит автоматизировать учет и анализ домашних расходов.
Установка - распаковать в папку, запустить файл FamilyBudget.mdb.
Примечание: просмотр документа из списка документов по клавише F3
Сборник исходников классов, функций и примеров на VBA для Microsoft Access 2000
Для более ранних версий Microsoft Access вполне может тоже подойти, как и для более свежих. Возможно придется проставить ссылки на доп. библиотеки Excel, Word, Office более ранних версий.
Как-то задали мне эту задачку, решать ее на листике даже не стал, решил пусть компьютер потрудится и даст мне ответ. На тот момент изучал С/С++, так что написал по быстрому и … получил ответ. Писал в Microsoft Visual Studio 6.0 под DOS.
Также говорят, что он же (Эйнштейн) предполагал, что ее не смогут решить 98% жителей Земли. Вот она:
Есть 5 домов, пяти различных цветов.
В домах живут люди разных национальностей (по одному в каждом доме).
Эти хозяева пьют разные напитки, курят различные виды сигар и держат различных домашних животных.
Хозяева не имеют одинаковых животных, не курят одинаковых сигар и не пьют одних и тех же напитков.
1. Британец живет в красном доме
2. Датчанин держит собаку
3. Норвежец пьет чай
4. Зеленый дом находится слева от белого (рядом) (прим.-имеет меньший номер?)
5. Владелец зеленого дома пьет кофе
6. Человек, курящий "Pall Mall", разводит птиц
7. Владелец желтого дома курит "Dunhill"
8. Человек, живущий в центральном доме, пьет молоко
9. Немец живет в первом доме
10. Человек, курящий "Blend", живет в доме за домом любителей кошек
11. Человек, держащий лошадей, живет в доме за домом курильщика "Dunhill"
12. Хозяин, который курит "Prince", пьет пиво
13. Швед курит "LM"
14. Немец живет рядом с синим домом
15. Сосед курильщика "Blend" - пьет воду
Кто содержит рыбок?
Решение задачи: обход шахматной доски конем так, чтобы он побывал на всех клетках по одному разу на С++. Пример рекурсии.
Писалось еще во времена изучения C++ прямо на паре в Microsoft Visual Studio 6.0 под DOS. Как простенький пример рекурсии.
От начальной позиции коня зависит и время расчета.
Например, с позиции по горизонтали =2, по вертикали =1, будет считать минут 15-20-ть,
а вот с других позиций может и намного дольше.